HTTP - buforowanie
Protokół HTTP jest zwykle używany w rozproszonych systemach informacyjnych, w których wydajność można poprawić, korzystając z pamięci podręcznych odpowiedzi. Protokół HTTP / 1.1 zawiera szereg elementów, które mają sprawić, że buforowanie będzie działać.
Celem buforowania w HTTP / 1.1 jest wyeliminowanie konieczności wysyłania żądań w wielu przypadkach oraz wyeliminowanie konieczności wysyłania pełnych odpowiedzi w wielu innych przypadkach.
Podstawowe mechanizmy pamięci podręcznej w HTTP / 1.1 to niejawne dyrektywy dla pamięci podręcznych, w których serwer określa czas wygaśnięcia i walidatory. UżywamyCache-Control nagłówek w tym celu.
Plik Cache-Controlnagłówek umożliwia klientowi lub serwerowi przesyłanie różnych dyrektyw w żądaniach lub odpowiedziach. Te dyrektywy zwykle zastępują domyślne algorytmy buforowania. Dyrektywy buforowania są określone na liście oddzielonej przecinkami. Na przykład:
Cache-control: no-cache
Następujące dyrektywy żądania pamięci podręcznej mogą być używane przez klienta w jego żądaniu HTTP:
SN | Dyrektywa i opis żądania pamięci podręcznej |
---|---|
1 | no-cache Pamięć podręczna nie może używać odpowiedzi do spełnienia kolejnego żądania bez pomyślnej ponownej walidacji na serwerze pochodzenia. |
2 | no-store Pamięć podręczna nie powinna przechowywać żadnych informacji o żądaniu klienta lub odpowiedzi serwera. |
3 | max-age = seconds Wskazuje, że klient jest gotowy zaakceptować odpowiedź, której wiek nie jest dłuższy niż określony czas w sekundach. |
4 | max-stale [ = seconds ] Wskazuje, że klient jest skłonny zaakceptować odpowiedź, która przekroczyła czas wygaśnięcia. Jeśli podano sekundy, nie może upłynąć więcej niż ten czas. |
5 | min-fresh = seconds Wskazuje, że klient jest skłonny zaakceptować odpowiedź, której okres ważności nie jest krótszy niż jej aktualny wiek plus określony czas w sekundach. |
6 | no-transform Nie konwertuje ciała jednostki. |
7 | only-if-cached Nie pobiera nowych danych. Pamięć podręczna może wysyłać dokument tylko wtedy, gdy znajduje się w pamięci podręcznej i nie powinna kontaktować się z serwerem pochodzenia, aby sprawdzić, czy istnieje nowsza kopia. |
Następujące dyrektywy odpowiedzi pamięci podręcznej mogą być używane przez serwer w odpowiedzi HTTP:
SN | Dyrektywa i opis odpowiedzi pamięci podręcznej |
---|---|
1 | public Wskazuje, że odpowiedź może być buforowana przez dowolną pamięć podręczną. |
2 | private Wskazuje, że całość lub część komunikatu odpowiedzi jest przeznaczona dla jednego użytkownika i nie może być zapisywana w pamięci podręcznej współużytkowanej. |
3 | no-cache Pamięć podręczna nie może używać odpowiedzi do spełnienia kolejnego żądania bez pomyślnej ponownej weryfikacji na serwerze pochodzenia. |
4 | no-store Pamięć podręczna nie powinna przechowywać żadnych informacji o żądaniu klienta lub odpowiedzi serwera. |
5 | no-transform Nie konwertuje ciała jednostki. |
6 | must-revalidate Pamięć podręczna musi weryfikować stan nieaktualnych dokumentów przed jej użyciem i nie należy używać tych, które utraciły ważność. |
7 | proxy-revalidate Dyrektywa proxy-revalidate ma takie samo znaczenie jak dyrektywa must-revalidate, z wyjątkiem tego, że nie ma zastosowania do niewspółdzielonych pamięci podręcznych agentów użytkownika. |
8 | max-age = seconds Wskazuje, że klient jest gotowy zaakceptować odpowiedź, której wiek nie jest dłuższy niż określony czas w sekundach. |
9 | s-maxage = seconds Maksymalny wiek określony w tej dyrektywie zastępuje maksymalny wiek określony w dyrektywie max-age lub w nagłówku Expires. Dyrektywa s-maxage jest zawsze ignorowana przez prywatną pamięć podręczną. |