Poproszono mnie o zbudowanie witryny, a jeden ze współtwórców powiedział mi, że będę musiał dołączyć nagłówek keep-alive.
Cóż, dużo o tym czytałem i wciąż mam pytania.
Otwarte połączenie poprawia wydajność, gdy klient wysyła wiele żądań dotyczących zawartości strony sieci Web, ponieważ serwer może szybciej zwrócić zawartość każdego żądania. W przeciwnym razie serwer będzie musiał otwierać nowe połączenie dla każdego żądania
Patrzeć na
- Kiedy IIS (F) wysyła
keep alive
nagłówek ( lub użytkownik wysyła keep-alive ), to znaczy, że (E
,C
,B
) Zapisz połączenia, które jest tylko dla mojej sesji? - Gdzie są przechowywane te informacje ( „to połączenie należy do„ Royi ” )?
- Czy to oznacza, że nikt inny nie może korzystać z tego połączenia
- Jeśli tak - czy to oznacza, że utrzymuj aktywny nagłówek - zmniejsz liczbę nakładających się użytkowników połączenia?
- jeśli tak, to jak długo połączenie jest dla mnie zachowywane? (Innymi słowy, jeśli ustawię opcję „keep alive” - „trzymaj” do kiedy?)
ps dla zainteresowanych:
kliknięcie tej przykładowej strony spowoduje zwrócenie nagłówka Keep Alive
http
http-headers
keep-alive
Royi Namir
źródło
źródło
Odpowiedzi:
Połączenie TCP jest rozpoznawane na podstawie źródłowego adresu IP i portu oraz docelowego adresu IP i portu. Twój system operacyjny, wszystkie pośrednie urządzenia obsługujące sesję i system operacyjny serwera rozpoznają połączenie w ten sposób.
HTTP działa z żądaniem odpowiedzi: klient łączy się z serwerem, wykonuje żądanie i otrzymuje odpowiedź. Bez utrzymywania aktywności połączenie z serwerem HTTP jest zamykane po każdej odpowiedzi. Dzięki utrzymywaniu aktywności HTTP utrzymujesz otwarte połączenie TCP, dopóki nie zostaną spełnione określone kryteria.
Pozwala to na wiele par żądanie-odpowiedź w ramach jednego połączenia TCP, eliminując niektóre stosunkowo powolne uruchamianie połączenia TCP.
Nie. Routery nie muszą pamiętać sesji. W rzeczywistości wiele pakietów TCP należących do tej samej sesji TCP nie musi przechodzić przez te same routery - to jest do zarządzania przez TCP. Routery po prostu wybierają najlepszą ścieżkę IP i przekazują pakiety. Funkcja utrzymywania aktywności jest dostępna tylko dla klienta, serwera i wszelkich innych pośrednich urządzeń obsługujących sesję.
Taka jest intencja połączeń TCP : jest to połączenie typu end-to-end przeznaczone tylko dla tych dwóch stron.
Zdefiniuj „nakładające się połączenia”. Zobacz trwałe połączenie HTTP, aby poznać niektóre zalety i wady, takie jak:
Typowa reakcja na utrzymanie przy życiu wygląda następująco:
Zobacz na przykład nagłówek Keep-Alive protokołu HTTP (Hypertext Transfer Protocol) (szkic dla HTTP / 2, w którym nagłówek Keep-Alive jest wyjaśniony bardziej szczegółowo niż oba 2616 i 2086 ):
Host ustawia wartość
timeout
parametru na czas, przez który host pozwoli na pozostawienie bezczynnego połączenia otwartego, zanim zostanie zamknięte. Połączenie jest bezczynne, jeśli żadne dane nie są wysyłane ani odbierane przez hosta.max
Parametr określa maksymalną liczbę żądań, które klient będzie sprawiają, lub że serwer pozwoli być wykonane na stałe połączenie. Po wysłaniu określonej liczby żądań i odpowiedzi host zawierający parametr może zamknąć połączenie.Jednak serwer może zamknąć połączenie po dowolnym czasie lub liczbie żądań (pod warunkiem, że zwraca odpowiedź na bieżące żądanie). Sposób implementacji zależy od serwera HTTP.
źródło
N
żądania przezN
połączenia (ponieważ domyślnie połączenie jest zamykane po każdej odpowiedzi), na przykładN
żądania odpalania przez połączeniaN / M
lub nawet tylkoM
połączenia, ponieważ może uruchamiać wiele żądań w każde otwarte połączenie, więc można użyć mniej.