Tworzę niektóre zawieszone połączenia z serwerem HTTP (kometa, odwrotna ajax itp.). Działa dobrze, ale widzę, że przeglądarka zezwala tylko na dwa zawieszone połączenia z daną domeną jednocześnie. Więc jeśli użytkownik patrzy na moją stronę w Tab1 swojej przeglądarki, a następnie próbuje ją załadować w Tab2, wykorzystał dwa dozwolone połączenia z moją witryną.
Myślę, że mogę zrobić coś z domeną wieloznaczną, gdzie mój serwer HTTP rozpoznaje dowolny adres mojej witryny, na przykład:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
więc:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
wszystkie nadal wskazują na ( www.example.com/webapp
), ale przeglądarka traktuje je jako różne domeny, więc nie mam limitu 2 połączeń. Czy to prawda?
Nawet jeśli to prawda - czy istnieje ograniczenie liczby aktywnych połączeń na przeglądarkę we wszystkich domenach? Powiedzmy, że używam powyższego schematu - czy na przykład Firefox zezwala tylko na 24 połączenia równoległe w danym momencie? Coś jak:
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!
Właśnie jako przykład wybrałem 24 połączenia / Firefox.
źródło
Odpowiedzi:
Maksymalna liczba domyślnych równoczesnych trwałych połączeń na serwer / proxy:
Limit wynosi na serwer / serwer proxy, więc schemat wieloznaczny będzie działał.
FYI: jest to szczególnie związane z HTTP 1.1; inne protokoły mają osobne obawy i ograniczenia (tj. SPDY, TLS, HTTP 2).
źródło
HTTP / 1.1
źródło: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/
HTTP / 2 (SPDY)
źródło
Pierwsza wartość to ConnectionsPerHostname, a druga to MaxConnections .
Źródło: http://www.browserscope.org/?category=network&v=top
Uwaga: ConnectionsPerHostname to maksymalna liczba równoczesnych żądań HTTP, które przeglądarki wysyłają do tej samej domeny. Aby zwiększyć liczbę jednoczesnych połączeń, można hostować zasoby (np. Obrazy) w różnych domenach. Nie można jednak przekroczyć MaxConnections , maksymalnej liczby połączeń, które przeglądarka otworzy łącznie - we wszystkich domenach.
Aktualizacja 2020
Liczba połączeń równoległych na przeglądarkę
setTimeout
, +requestAnimationFrame
,then
...źródło
Różne przeglądarki mają różne limity maksymalnej liczby połączeń na nazwę hosta; dokładne liczby można znaleźć na stronie http://www.browserscope.org/?category=network, a tutaj jest interesujący artykuł na temat ograniczeń połączeń autorstwa eksperta od spraw wydajności Steve'a Soudersa http://www.stevesouders.com/blog/2008/ 03/20 / połączenia szeregowe na równoległych /
źródło
Firefox przechowuje ten numer w tym ustawieniu (znajdziesz go w
about:config
):network.http.max-connections-per-server
W przypadku maksymalnych połączeń Firefox przechowuje to w tym ustawieniu:
network.http.max-connections
źródło
network.http.max-connections
ma domyślnie 900, co nie odnosi się do maksymalnej liczby połączeń równoległych, która poprzez testowanie wersji 52 wynosi wciąż 17.network.http.max-persistent-connections-per-server
właściwiePodczas testowania na stronie zauważyłem takie zachowanie:
Edycja: Wydaje się, że firefox 4 powinien być w stanie wykonać 15 połączeń, ale takiego zachowania nie zaobserwowałem.
źródło
Dwa równoległe żądania są celową częścią projektu wielu przeglądarek. Istnieje standard, który celowo przestrzegają „dobrzy klienci HTTP”. Sprawdź to RFC, aby zobaczyć dlaczego.
źródło
Patrzeć na
about:config
na Firefox 33 na GNU / Linux (Ubuntu) i szukającconnections
znalazłem:To może odpowiedzieć na pytanie, czy istnieje ograniczenie liczby aktywnych połączeń na przeglądarkę we wszystkich domenach
pominął dwie właściwości ...
(ciekawe, wydaje się, że nie są ograniczone na serwer, ale mają domyślną wartość niższą niż globalne połączenia HTTP)
źródło
Należy pamiętać, że zwiększenie maksymalnej liczby połączeń przeglądarki na serwer do nadmiernej liczby (jak sugerują niektóre strony) może i blokuje innym użytkownikom dostęp do małych witryn dzięki planom hostingowym, które ograniczają całkowitą liczbę jednoczesnych połączeń na serwerze.
źródło
Rozumiem, że limitu połączeń nie można zmienić po stronie klienta. Limit połączenia musi zostać zmieniony na serwerze, aby uzyskać jakikolwiek efekt. Domyślnie wiele serwerów zezwala tylko na 2 połączenia na jednego klienta.
Klient nie jest przeglądarką, to komputer kliencki wysyłający żądania TCP / IP.
Aby zobaczyć efekt bardzo wyraźnie, użyj czegoś takiego jak JMeter, aby wystrzelić kilka wywołań usług internetowych do hosta serwera - zaakceptuje dwa pierwsze i nie zaakceptuje kolejnego, dopóki jedno z nich nie zostanie zakończone. Niesamowite jest to, że w przypadku sklepu SOA jest to bardzo ważne, ale mało kto jest tego świadomy.
źródło
Nie ma na to ostatecznej odpowiedzi, ponieważ każda przeglądarka ma własną konfigurację do tego, a konfigurację tę można zmienić. Jeśli wyszukujesz w Internecie, możesz znaleźć sposoby na zmianę tego limitu (zwykle są one oznaczone jako „metody poprawy wydajności”). Może być wskazane, aby użytkownicy zrobili to, jeśli jest to wymagane przez Twoją witrynę.
źródło
źródło