Perché l'attributo Cache-Control viene inviato nell'intestazione della richiesta (dal client al server)?


165

Dopo aver letto il Cache-Controlcampo dell'intestazione HTTP,

Capisco che il Cache-Controlcampo nell'intestazione di risposta HTTP (server al client) specifica le direttive per il browser dei server proxy intermedio / cliente su come gestire la risposta, con l'invio di valori diversi per il Cache-Controlcampo: private, public, no-cache, o no-storenell'intestazione della risposta.

Ma non capisco perché dobbiamo inviare l' Cache-Controlattributo nell'intestazione della richiesta (dal client al server)?

Risposte:


138

Cache-Control: no-cacheviene generalmente utilizzato in un'intestazione di richiesta (inviata dal browser Web al server) per forzare la convalida della risorsa nei proxy intermedi. Se il client non invia questa richiesta al server, i proxy intermedi restituiranno una copia del contenuto se è aggiornato (non è scaduto in base ai campi Expireo max-age). Cache-Controlindica a questi proxy di riconvalidare la copia anche se è nuova.


8
Potrebbe essere troppo tardi qui, ma tranne che cosa sono gli altri usi? Il campo max-age è utilizzato per qualsiasi scopo?
Sam

Perché i browser moderni tendono a fare questo? Non si fidano dei proxy intermedi anche se si comportano secondo gli standard web ??
rogerdpack,

1
@rogerdpack no, perché fanno la fiducia loro, in modo mandano l'intestazione che hanno fiducia sarà onorato per indicare che essi hanno un motivo particolare per richiedere una maggiore freschezza rispetto maggior parte degli utilizzi bisogno.
Jon Hanna,

1
@rogerdpack se hai appena fatto qualcosa che sai che avrebbe cambiato lo stato e vuoi rifletterlo, sarebbe un caso classico.
Jon Hanna,

8
@JonHanna Forse hai "disabilita cache" controllato negli strumenti di sviluppo di Chrome? : D
Gregory Magarshak,

15

Un client può inviare Cache-Controlun'intestazione in una richiesta per richiedere comportamenti di memorizzazione nella cache specifici, come la riconvalida, dal server di origine e da qualsiasi server proxy intermedio lungo il percorso della richiesta.


4

Oltre alla risposta sopra,
potrebbe esserci un'impostazione in cui è implementato il concatenamento della cache. In tal caso, se la richiesta arriva alla prima cache in cui non è soddisfatta, potrebbe passare a una cache concatenata.

Pertanto, al fine di ottenere la risposta sempre dal server, includiamo il controllo della cache nelle intestazioni delle richieste. Questo assicurerà che la risposta provenga sempre dal server.


Dici "Quindi per ottenere sempre la risposta dal server includiamo il controllo della cache nelle intestazioni delle richieste. Ciò assicurerà che la risposta provenga sempre dal server." Quale valore di questa intestazione lo farebbe?
Don Hatch,

Cache-Control: no-cachedirà ai proxy di assicurarsi che la risposta sia validata fino in fondo.
mogsie
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.