Per una richiesta che deve usare una risposta già memorizzata, HTTP definisce Cache-Control: only-if-cached.

Il client può inviarla tramite un proxy di cache HTTP:

curl --proxy http://127.0.0.1:3128 \
  --header 'Cache-Control: only-if-cached' \
  --include http://www.example.org/report

Una cache che rispetta questa direttiva deve restituire una risposta memorizzata coerente con gli altri vincoli della richiesta, oppure 504 Gateway Timeout quando non può soddisfarla. Qui un 504 può esprimere la politica della cache e non una connessione TCP fallita verso il proxy.

La direttiva non autorizza automaticamente contenuti obsoleti. Freschezza, requisiti di validazione e campi Vary corrispondenti contano ancora. La direttiva di richiesta no-cache può invece richiedere una valida conferma presso l'origine prima del riuso.

Questo è diverso anche dall'impostare una modalità di validazione offline della cache. only-if-cached viaggia sulla singola richiesta ed esprime ciò che il client è disposto a ricevere.

Usa una cache che supporti questo comportamento. Una direttiva di richiesta ignorata non è un firewall, quindi impedire rigorosamente il traffico in uscita richiede una politica di rete o di server applicata in modo indipendente.

Un normale proxy HTTPS CONNECT non vede le intestazioni HTTP cifrate né conserva oggetti pagina da quel tunnel. L'esempio usa deliberatamente una risorsa HTTP semplice che la cache può elaborare.

Articoli correlati