Połączenia trwałe
Specyfikacja HTTP/1.1 wprowadza jako domyślne połączenia trwałe ([13], str.29). Oznacza to, że klient łączący się z serwerem przy jednym połączeniu może wysłać wiele zapytań do serwera i nie ma on konieczności informowania serwera przy każdym zapytaniu o chęci utrzymania tego połączenia (rys. 1.4). Jeżeli połączenie ma zostać przerwane przez serwer, to on musi zwrócić informację do klienta o zakończeniu połączenia. Służy do tego nagłówek „Connection” z wartością „close”. Nagłówek ten może również być wysłany przez klienta, który chce poinformować serwer, że już nie będzie wysyłał aktualnym połączeniem następnego zapytania i po otrzymaniu odpowiedzi można zamknąć połączenie. Klient nie ma jednak takiego obowiązku, więc po stronie serwera należy zaimplementować mechanizm przerywający połączenie z klientem, po określonym czasie nieaktywności.
Klient obsługujący połączenia trwałe może wysyłać wiele zapytań do serwera - jedno po drugim, bez oczekiwania pomiędzy nimi na odpowiedź serwera (rys. 1.5). Są to tak zwane połączenia trwałe potokowane (pipelining). Takie zapytania powinny być buforowane gdzieś po stronie serwera, przetwarzane, a następnie odpowiedzi wysłane w kolejności takiej, w jakiej napływały zapytania. Serwer nie ma tutaj obowiązku obsłużenia wszystkich zapytań otrzymanych od klienta – może przerwać połączenie z klientem (komunikując to w ostatniej wysłanej odpowiedzi) np. w momencie wystąpienia błędu, a obsłużenie takiej sytuacji leży już po stronie klienta.
Serwer HTTP 