2. Overview of Cache Operation
Un corretto funzionamento della cache preserva la semantica dei trasferimenti HTTP riducendo al contempo la trasmissione di informazioni già detenute nella cache. Vedere la Sezione 3 per i dettagli su come una cache può determinare quali risposte sono memorizzabili in cache e la Sezione 4 per i dettagli sulla costruzione di risposte da voci di cache. Questa sezione fornisce una panoramica di come le cache selezionano e aggiornano le risposte memorizzate.
Sebbene il caching sia una funzionalità interamente OPZIONALE (OPTIONAL) di HTTP, si può presumere che il riutilizzo di una risposta memorizzata in cache sia desiderabile e che tale riutilizzo sia il comportamento predefinito quando nessun requisito o configurazione locale lo impedisce. Pertanto, i requisiti della cache HTTP si concentrano sulla prevenzione del fatto che una cache memorizzi una risposta non riutilizzabile o riutilizzi in modo inappropriato una risposta memorizzata, piuttosto che imporre che le cache memorizzino e riutilizzino sempre particolari risposte.
Il componente di query (Query Component) di un target di richiesta (Sezione 5.3 di [RFC7230]) può contenere informazioni sulla richiesta specifiche per un utente, una coorte di utenti o lo stato corrente dell'utente. In generale, non è sicuro per una cache riutilizzare una risposta a una richiesta con un componente di query per soddisfare quella stessa richiesta da un altro utente, poiché gli utenti potrebbero avere valori di query diversi nelle loro richieste anche se le porzioni di percorso sono le stesse. Un destinatario di cache che riceve una risposta riuscita con un componente di query nel target della richiesta NON DOVREBBE (SHOULD NOT) riutilizzare quella risposta per una richiesta con un componente di query diverso, a meno che la risposta non lo consenta esplicitamente con direttive Cache-Control (Sezione 5.2).
Una cache può memorizzare e riutilizzare una risposta a una richiesta con un componente di query se la risposta è esplicitamente consentita da direttive Cache-Control o la risposta contiene un validatore (Validator) (Sezione 2.3 di [RFC7232]) e la cache segue i requisiti di validazione. Quando ciò accade, una cache PUÒ (MAY) utilizzare quella risposta per soddisfare una richiesta diversa, soggetta al vincolo che la chiave di cache corrisponda (Sezione 4.1), tutti i requisiti di freschezza applicabili siano soddisfatti (Sezione 4.2) e tutti i requisiti di cache applicabili imposti dalla richiesta e dalla risposta memorizzata siano soddisfatti.
Esistono vari meccanismi attraverso i quali una cache può apprendere la validità corrente di una risposta memorizzata in cache. Una risposta memorizzata in cache è "fresca" (Fresh) se la sua età non ha ancora superato la sua durata di freschezza (Freshness Lifetime). Al contrario, una risposta memorizzata in cache è "obsoleta" (Stale) se è stata nella cache abbastanza a lungo da soddisfare o superare la sua durata di freschezza.
Una risposta fresca può essere utilizzata per soddisfare richieste successive senza contattare il server di origine, migliorando così l'efficienza. Il protocollo include meccanismi per un server di origine per assegnare una durata di freschezza esplicita, il calcolo di una durata di freschezza euristica quando non ne è impostata una esplicita e un meccanismo per validare una risposta memorizzata in cache per estendere la sua durata di freschezza dopo che è diventata obsoleta.
Il meccanismo principale per assegnare la freschezza è che un server di origine invii un tempo di scadenza esplicito tramite il campo di intestazione Expires (Sezione 5.3) o la direttiva di risposta max-age (Sezione 5.2.2.8). In genere, i server di origine assegneranno un tempo di scadenza esplicito sufficiente per soddisfare tutti gli usi previsti della risposta. Una durata liberale può essere data per consentire un frequente riutilizzo da parte delle cache; una durata conservativa può essere data se il contenuto è noto per variare regolarmente.
Quando un tempo di scadenza esplicito non è presente, una cache PUÒ (MAY) calcolare un tempo di scadenza euristico. Una cache NON DEVE (MUST NOT) utilizzare tempi di scadenza euristici per risposte con codici di stato la cui memorizzabilità in cache non è definita da questa specifica, come reindirizzamenti diversi da 300, 301 o 308 (vedere Sezione 6 di [RFC7231]), o quando il codice di stato indica un errore (cioè, il codice di stato è maggiore o uguale a 400).
Quando una risposta memorizzata è obsoleta, una cache utilizza tipicamente la validazione (richieste condizionali come definite in [RFC7232]) per aggiornare la risposta memorizzata ed evitare di trasferire i dati di rappresentazione inutilmente. Una risposta obsoleta può ancora essere utilizzata, senza validazione, se l'operazione disconnessa è consentita dalla configurazione della cache o le direttive di richiesta in Cache-Control lo consentono (Sezione 5.2).
📝 翻译说明 (Translation Notes)
- 核心概念: Fresh (新鲜/新鮮/fraîche/frisch/fresca), Stale (过期/古い/périmée/veraltet/obsoleta), Freshness Lifetime (新鲜度生命周期/鮮度有効期間/durée de vie de fraîcheur/Frische-Lebensdauer/durata di freschezza) 等关键术语在各语言中保持一致性
- RFC 2119关键词: MUST, SHOULD, MAY等保留英文,符合RFC翻译规范
- 技术准确性: Query Component, Validator等专业术语采用双语标注以确保准确理解