3. Storing Responses in Caches
Una cache NON DEVE (MUST NOT) memorizzare una risposta a qualsiasi richiesta, a meno che:
- Il metodo di richiesta sia compreso dalla cache e definito come memorizzabile in cache, e
- il codice di stato della risposta sia compreso dalla cache, e
- la direttiva di cache "no-store" (vedere Sezione 5.2) non appaia nei campi di intestazione della richiesta o della risposta, e
- la direttiva di risposta "private" (vedere Sezione 5.2.2.6) non appaia nella risposta, se la cache è condivisa, e
- il campo di intestazione Authorization (vedere Sezione 4.2 di
[RFC7235]) non appaia nella richiesta, se la cache è condivisa, a meno che la risposta lo consenta esplicitamente (vedere Sezione 3.2), e - la risposta soddisfi una delle seguenti condizioni:
- contiene un campo di intestazione Expires (vedere Sezione 5.3), o
- contiene una direttiva di risposta max-age (vedere Sezione 5.2.2.8), o
- contiene una direttiva di risposta s-maxage (vedere Sezione 5.2.2.9) e la cache è condivisa, o
- contiene un'Estensione Cache Control (vedere Sezione 5.2.3) che consente di memorizzarla in cache, o
- ha un codice di stato definito come memorizzabile in cache per impostazione predefinita (vedere Sezione 4.2.2), o
- contiene una direttiva di risposta public (vedere Sezione 5.2.2.5).
Si noti che uno qualsiasi dei requisiti elencati sopra può essere sostituito da un'estensione di controllo della cache; vedere Sezione 5.2.3.
In questo contesto, una cache ha "compreso" un metodo di richiesta o un codice di stato di risposta se lo riconosce e implementa tutto il comportamento relativo al caching specificato.
Si noti che, durante il funzionamento normale, alcune cache non memorizzeranno una risposta che non ha né un validatore di cache né un tempo di scadenza esplicito, poiché tali risposte di solito non sono utili da memorizzare. Tuttavia, le cache non sono vietate dal memorizzare tali risposte.