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)?

Student
źródło

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.

David
źródło
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.

bdash
źródło
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.

Loui
źródło
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