Estou criando algumas conexões suspensas para um servidor HTTP (cometa, ajax reverso, etc). Funciona bem, mas vejo que o navegador só permite duas conexões suspensas para um determinado domínio simultaneamente. Portanto, se um usuário estiver visualizando meu site na Tab1 do navegador, e também tentar carregá-lo na Tab2, ele utilizará as duas conexões permitidas ao meu site.
Eu acho que posso fazer alguma coisa de domínio curinga, onde meu servidor http resolve qualquer endereço do meu site, como:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
tão:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
todos ainda apontam para ( www.example.com/webapp
), mas o navegador os considera domínios diferentes; portanto, não encontro o limite de 2 conexões. Isso é verdade?
Mesmo se isso for verdade - existe algum limite para o número de conexões ativas por navegador em todos os domínios? Digamos que eu use o esquema acima - o Firefox, por exemplo, permite apenas 24 conexões paralelas a qualquer momento? 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!
Acabei de escolher 24 conexões / Firefox como exemplo.
fonte
Respostas:
Número máximo de conexões persistentes simultâneas padrão por servidor / proxy:
O limite é por servidor / proxy, portanto, seu esquema de caracteres curinga funcionará.
FYI: isso está especificamente relacionado ao HTTP 1.1; outros protocolos têm preocupações e limitações separadas (por exemplo, SPDY, TLS, HTTP 2).
fonte
HTTP / 1.1
fonte: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/
HTTP / 2 (SPDY)
fonte
O primeiro valor é ConnectionsPerHostname e o segundo valor é MaxConnections .
Fonte: http://www.browserscope.org/?category=network&v=top
Nota: ConnectionsPerHostname é o número máximo de solicitações http simultâneas que os navegadores farão no mesmo domínio. Para aumentar o número de conexões simultâneas, é possível hospedar recursos (por exemplo, imagens) em diferentes domínios. No entanto, você não pode exceder o MaxConnections , o número máximo de conexões que um navegador abrirá no total - em todos os domínios.
Atualização 2020
Número de conexões paralelas por navegador
setTimeout
, +requestAnimationFrame
,then
...fonte
Vários navegadores têm vários limites para o máximo de conexões por nome de host; você pode encontrar os números exatos em http://www.browserscope.org/?category=network e aqui está um artigo interessante sobre limitações de conexão do especialista em desempenho da web Steve Souders http://www.stevesouders.com/blog/2008/ 03/20 / conexões arredondadas em paralelo /
fonte
O Firefox armazena esse número nessa configuração (você o encontra
about:config
):network.http.max-connections-per-server
Para as conexões máximas, o Firefox armazena isso nesta configuração:
network.http.max-connections
fonte
network.http.max-connections
é 900 por padrão, o que não está relacionado ao número máximo de conexões paralelas que, através do teste da versão 52, ainda é 17.network.http.max-persistent-connections-per-server
realmenteFazendo testes em uma página, vi esse comportamento:
Edit: Parece que o firefox 4 deve ser capaz de fazer 15 conexões, mas esse não é o comportamento que observei.
fonte
As 2 solicitações simultâneas são uma parte intencional do design de muitos navegadores. Existe um padrão lá fora, que "bons clientes http" aderem de propósito. Confira este RFC para ver o porquê.
fonte
Olhando para o
about:config
Firefox 33 no GNU / Linux (Ubuntu) e pesquisandoconnections
, encontrei:É provável que responda à parte : existe algum limite para o número de conexões ativas por navegador, em todo o domínio
pulou duas propriedades ...
(interessante, parece que eles não são limitados por servidor, mas têm um valor padrão menor que as conexões http globais)
fonte
Observe que aumentar o número máximo de conexões de um navegador por servidor para um número excessivo (como sugerem alguns sites) pode bloquear outros usuários de sites pequenos com planos de hospedagem que limitam o total de conexões simultâneas no servidor.
fonte
Meu entendimento é que o limite de conexão não é alterável no lado do cliente. O limite de conexão deve ser alterado no servidor para ter algum efeito. Por padrão, muitos servidores permitem apenas 2 conexões por cliente único.
O cliente não é o navegador, é a máquina do cliente que está emitindo as solicitações de TCP / IP.
Para ver o efeito com muita clareza, use algo como o JMeter para disparar várias chamadas de serviço da web para o host do servidor - ele aceitará os dois primeiros e não aceitará outro até que um deles seja concluído. O incrível é que, para uma loja de SOA, isso é crítico, mas dificilmente alguém está realmente ciente disso.
fonte
Não há resposta definitiva para isso, pois cada navegador tem sua própria configuração para isso, e essa configuração pode ser alterada. Se você pesquisar na Internet, poderá encontrar maneiras de alterar esse limite (geralmente elas são marcadas como "métodos de aprimoramento de desempenho"). Pode valer a pena aconselhar seus usuários a fazê-lo, se for exigido pelo seu site.
fonte
fonte