Dlaczego atrybut Cache-Control jest wysyłany w nagłówku żądania (klient do serwera)?


163

Po przeczytaniu o Cache-Controlpolu nagłówka HTTP,

Rozumiem, że Cache-Controlw nagłówku odpowiedzi HTTP (serwer do klienta) określa wytyczne dla przeglądarki pośrednie serwery proxy / klienta o tym, jak poradzić sobie z odpowiedzi, wysyłając różne wartości dla Cache-Controlpola: private, public, no-cache, lub no-storew nagłówku odpowiedzi.

Ale nie rozumiem, dlaczego musimy wysłać Cache-Controlatrybut w nagłówku żądania (klient do serwera)?

Odpowiedzi:


137

Cache-Control: no-cachejest zwykle używany w nagłówku żądania (wysyłanym z przeglądarki internetowej do serwera) w celu wymuszenia walidacji zasobu w pośrednich serwerach proxy. Jeśli klient nie wyśle ​​tego żądania do serwera, pośredniczące serwery proxy zwrócą kopię treści, jeśli jest nowa (nie wygasła zgodnie z polami Expirelub max-age). Cache-Controlnakazuje tym proxy, aby ponownie zweryfikowali kopię, nawet jeśli jest nowa.


8
Może być za późno, ale poza tym, jakie są inne zastosowania? Czy pole max-age jest używane w jakimkolwiek celu?
Sam

Dlaczego współczesne przeglądarki miałyby to robić? Nie ufają pośrednim serwerom proxy, mimo że zachowują się zgodnie ze standardami sieciowymi?
rogerdpack

1
@rogerdpack nie, bo zrobić im zaufać, więc wysyłają nagłówek, że ufa będą honorowane, aby wskazać, że mają jakiś szczególny powód, dla wymagających większą świeżość niż większości zastosowań potrzebne.
Jon Hanna,

1
@rogerdpack, jeśli właśnie zrobiłeś coś, o czym wiesz, że zmieniło stan i chcesz to odzwierciedlić, byłby to klasyczny przypadek.
Jon Hanna

8
@JonHanna Być może masz zaznaczoną opcję „wyłącz pamięć podręczną” w Narzędziach dla programistów Chrome? : D
Gregory Magarshak

15

Klient może wysłać Cache-Controlnagłówek w żądaniu, aby zażądać określonego zachowania buforowania, takiego jak ponowna walidacja, z serwera pochodzenia i dowolnych pośrednich serwerów proxy wzdłuż ścieżki żądania.


4

Oprócz powyższej odpowiedzi
może istnieć konfiguracja, w której zaimplementowano łańcuch pamięci podręcznej. W takim przypadku, jeśli żądanie dotrze do pierwszej pamięci podręcznej, w której nie jest spełnione, może przejść do dalszej pamięci podręcznej połączonej z łańcuchem.

Dlatego, aby zawsze uzyskiwać odpowiedź z serwera, w nagłówkach żądań umieszczamy kontrolę pamięci podręcznej. Dzięki temu odpowiedź będzie zawsze pochodzić z serwera.


Mówisz „Tak więc, aby zawsze otrzymywać odpowiedź z serwera, włączamy kontrolę pamięci podręcznej w nagłówkach żądań. Dzięki temu odpowiedź będzie zawsze pochodzić z serwera”. Jaka wartość tego nagłówka mogłaby to osiągnąć?
Don Hatch

Cache-Control: no-cachepoinstruuje serwery proxy, aby upewnić się, że odpowiedź jest do końca zweryfikowana.
mogsie
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.