Passa al contenuto principale

4. Constructing Responses from Caches

Quando viene presentata una richiesta, una cache NON DEVE (MUST NOT) riutilizzare una risposta memorizzata, a meno che:

  • L'URI di richiesta effettiva presentata (Sezione 5.5 di [RFC7230]) e quella della risposta memorizzata corrispondano, e
  • il metodo di richiesta associato alla risposta memorizzata ne consenta l'uso per la richiesta presentata, e
  • i campi di intestazione di selezione nominati dalla risposta memorizzata (se presenti) corrispondano a quelli presentati (vedere Sezione 4.1), e
  • la richiesta presentata non contenga il pragma no-cache (Sezione 5.4), né la direttiva di cache no-cache (Sezione 5.2.1), a meno che la risposta memorizzata non sia stata validata con successo (Sezione 4.3), e
  • la risposta memorizzata non contenga la direttiva di cache no-cache (Sezione 5.2.2.2), a meno che non sia stata validata con successo (Sezione 4.3), e
  • la risposta memorizzata sia:
    • fresca (vedere Sezione 4.2), o
    • autorizzata a essere servita obsoleta (vedere Sezione 4.2.4), o
    • validata con successo (vedere Sezione 4.3).

Si noti che uno qualsiasi dei requisiti elencati sopra può essere sostituito da un'estensione di controllo della cache; vedere Sezione 5.2.3.

Quando una risposta memorizzata viene utilizzata per soddisfare una richiesta senza validazione, una cache DEVE (MUST) generare un campo di intestazione Age (Sezione 5.1), sostituendo qualsiasi presente nella risposta con un valore uguale al current_age della risposta memorizzata; vedere Sezione 4.2.3.

Una cache DEVE (MUST) trasmettere direttamente le richieste con metodi non sicuri (Sezione 4.2.1 di [RFC7231]) al server di origine; cioè, una cache non è autorizzata a generare una risposta a tale richiesta prima di aver inoltrato la richiesta e ricevuto una risposta corrispondente.

Inoltre, si noti che le richieste non sicure potrebbero invalidare risposte già memorizzate; vedere Sezione 4.4.

Quando sono memorizzate più risposte adeguate, una cache DEVE (MUST) utilizzare la risposta più recente (come determinato dal campo di intestazione Date). Può anche inoltrare la richiesta con "Cache-Control: max-age=0" o "Cache-Control: no-cache" per disambiguare quale risposta utilizzare.

Una cache che non ha un orologio disponibile NON DEVE (MUST NOT) utilizzare risposte memorizzate senza rivalidarle ad ogni uso.