Estoy creando algunas conexiones suspendidas a un servidor HTTP (cometa, ajax inverso, etc.). Funciona bien, pero veo que el navegador solo permite dos conexiones suspendidas a un dominio dado simultáneamente. Entonces, si un usuario está mirando mi sitio web en la Tab1 de su navegador, y luego intenta cargarlo en la Tab2, ha usado las dos conexiones permitidas a mi sitio.
Creo que puedo hacer algo de dominio de comodines, donde hago que mi servidor http resuelva cualquier dirección de mi sitio como:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
entonces:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
todos todavía apuntan a ( www.example.com/webapp
) pero el navegador los considera dominios diferentes, por lo que no encuentro el límite de 2 conexiones. ¿Es esto cierto?
Incluso si eso es cierto, ¿hay algún límite para la cantidad de conexiones activas por navegador en todos los dominios? Digamos que uso el esquema anterior: ¿Firefox, por ejemplo, solo permite 24 conexiones paralelas en un momento dado? Algo como:
1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!
Acabo de elegir 24 conexiones / Firefox como ejemplo.
fuente
Respuestas:
Número máximo de conexiones persistentes simultáneas predeterminadas por servidor / proxy:
El límite es por servidor / proxy, por lo que su esquema comodín funcionará.
FYI: esto está específicamente relacionado con HTTP 1.1; otros protocolos tienen preocupaciones y limitaciones separadas (es decir, SPDY, TLS, HTTP 2).
fuente
HTTP / 1.1
fuente: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/
HTTP / 2 (SPDY)
fuente
El primer valor es ConnectionsPerHostname y el segundo valor es MaxConnections .
Fuente: http://www.browserscope.org/?category=network&v=top
Nota: ConnectionsPerHostname es el número máximo de solicitudes HTTP simultáneas que los navegadores harán al mismo dominio. Para aumentar el número de conexiones concurrentes, uno puede alojar recursos (por ejemplo, imágenes) en diferentes dominios. Sin embargo, no puede exceder MaxConnections , el número máximo de conexiones que un navegador abrirá en total, en todos los dominios.
Actualización 2020
Número de conexiones paralelas por navegador
setTimeout
+requestAnimationFrame
,then
...fuente
Varios navegadores tienen varios límites para las conexiones máximas por nombre de host; Puede encontrar los números exactos en http://www.browserscope.org/?category=network y aquí hay un artículo interesante sobre las limitaciones de conexión del experto en rendimiento web Steve Souders http://www.stevesouders.com/blog/2008/ 03/20 / roundup-on-parallel-connections /
fuente
Firefox almacena ese número en esta configuración (lo encuentras en
about:config
):network.http.max-connections-per-server
Para las conexiones máximas, Firefox almacena eso en esta configuración:
network.http.max-connections
fuente
network.http.max-connections
es 900 por defecto, que no se refiere al número máximo de conexiones paralelas, que a través de pruebas de la versión 52 está todavía 17.network.http.max-persistent-connections-per-server
realidadHaciendo pruebas en una página vi este comportamiento:
Editar: Parece que Firefox 4 debería poder hacer 15 conexiones, pero ese no es el comportamiento que observé.
fuente
Las 2 solicitudes concurrentes son una parte intencional del diseño de muchos navegadores. Existe un estándar que los "buenos clientes http" cumplen a propósito. Echa un vistazo a este RFC para ver por qué.
fuente
Mirando en
about:config
Firefox 33 en GNU / Linux (Ubuntu), y buscandoconnections
, encontré:Es probable que responda a la parte : ¿hay algún límite en la cantidad de conexiones activas por navegador en todos los dominios?
omitió dos propiedades ...
(interesante, parece que no están limitados por servidor pero tienen un valor predeterminado menor que las conexiones http globales)
fuente
Tenga en cuenta que aumentar las conexiones máximas de un navegador por servidor a un número excesivo (como sugieren algunos sitios) puede bloquear a otros usuarios de sitios pequeños con planes de alojamiento que limitan el total de conexiones simultáneas en el servidor.
fuente
Tengo entendido que el límite de conexión no se puede cambiar en el lado del cliente. El límite de conexión debe cambiarse en el servidor para que tenga algún efecto. Por defecto, muchos servidores solo permitirán 2 conexiones por cliente único.
El cliente no es el navegador, es la máquina del cliente que emite las solicitudes TCP / IP.
Para ver el efecto muy claramente, use algo como JMeter para disparar un montón de llamadas de servicio web al host de su servidor: aceptará las dos primeras y no aceptará otra hasta que se complete una de las dos. Lo sorprendente de esto es que para una tienda SOA, esto es crítico, pero casi nadie lo sabe.
fuente
No hay una respuesta definitiva a esto, ya que cada navegador tiene su propia configuración para esto, y esta configuración puede modificarse. Si busca en Internet, puede encontrar formas de cambiar este límite (generalmente están marcados como "métodos de mejora del rendimiento"). Puede valer la pena aconsejar a sus usuarios que lo hagan si así lo requiere su sitio web.
fuente
fuente