Passa al contenuto principale

4 2.Freshness

Una risposta fresca (Fresh Response) è una risposta la cui età non ha ancora superato la sua durata di freschezza (Freshness Lifetime). Al contrario, una risposta obsoleta (Stale Response) è una risposta che l'ha superata.

La durata di freschezza di una risposta è il periodo di tempo tra la sua generazione da parte del server di origine e il suo tempo di scadenza. Un tempo di scadenza esplicito (Explicit Expiration Time) è il momento in cui il server di origine intende che una risposta memorizzata non possa più essere utilizzata da una cache senza ulteriore validazione, mentre un tempo di scadenza euristico (Heuristic Expiration Time) viene assegnato da una cache quando non è disponibile un tempo di scadenza esplicito.

L'età di una risposta (Age) è il tempo trascorso da quando è stata generata da, o validata con successo con, il server di origine.

Quando una risposta è "fresca" nella cache, può essere utilizzata per soddisfare richieste successive senza contattare il server di origine, migliorando così l'efficienza.

Il meccanismo principale per determinare la freschezza è che il server di origine fornisca un tempo di scadenza esplicito nel futuro, utilizzando il campo di intestazione Expires (Sezione 5.3) o la direttiva di risposta max-age (Sezione 5.2.2.8). In generale, i server di origine assegneranno tempi di scadenza espliciti futuri alle risposte nella convinzione che la rappresentazione non sia suscettibile di cambiare in modo semanticamente significativo prima che venga raggiunto il tempo di scadenza.

Se un server di origine desidera forzare una cache a validare ogni richiesta, può assegnare un tempo di scadenza esplicito nel passato per indicare che la risposta è già obsoleta. Le cache conformi normalmente valideranno una risposta in cache obsoleta prima di riutilizzarla per richieste successive (vedere Sezione 4.2.4).

Poiché i server di origine non forniscono sempre tempi di scadenza espliciti, le cache sono anche autorizzate a utilizzare un'euristica per determinare un tempo di scadenza in determinate circostanze (vedere Sezione 4.2.2).

Il calcolo per determinare se una risposta è fresca è:

response_is_fresh = (freshness_lifetime > current_age)

freshness_lifetime è definito nella Sezione 4.2.1; current_age è definito nella Sezione 4.2.3.

I client possono inviare le direttive di cache max-age o min-fresh in una richiesta per vincolare o rilassare i calcoli di freschezza per la risposta corrispondente (Sezione 5.2.1).

Quando si calcola la freschezza, per evitare problemi comuni nell'analisi delle date:

  • Sebbene tutti i formati di data siano specificati come sensibili alle maiuscole/minuscole, un destinatario di cache DOVREBBE (SHOULD) abbinare i nomi di giorni, settimane e fusi orari senza distinzione tra maiuscole e minuscole.
  • Se l'implementazione interna del tempo di un destinatario di cache ha una risoluzione inferiore al valore di una HTTP-date, il destinatario DEVE (MUST) rappresentare internamente una data Expires analizzata come il momento più vicino uguale o precedente al valore ricevuto.
  • Un destinatario di cache NON DEVE (MUST NOT) consentire ai fusi orari locali di influenzare il calcolo o il confronto di un'età o di un tempo di scadenza.
  • Un destinatario di cache DOVREBBE (SHOULD) considerare una data con un'abbreviazione di zona diversa da GMT o UTC come non valida per il calcolo della scadenza.

Si noti che la freschezza si applica solo al funzionamento della cache; non può essere utilizzata per forzare un user agent ad aggiornare la sua visualizzazione o ricaricare una risorsa. Vedere la Sezione 6 per una spiegazione della differenza tra cache e meccanismi di cronologia.


📝 翻译说明 (Translation Notes)

  • 核心概念术语:
    • Fresh/Stale (新鲜/过期, 新鮮/古い, fraîche/périmée, frisch/veraltet, fresca/obsoleta)
    • Freshness Lifetime (新鲜度生命周期, 鮮度有効期間, durée de vie de fraîcheur, Frische-Lebensdauer, durata di freschezza)
    • Explicit/Heuristic Expiration Time (显式/启发式过期时间)
  • RFC 2119关键词: MUST, SHOULD, MUST NOT等保留英文,符合国际标准
  • 算法公式: response_is_fresh = (freshness_lifetime > current_age) 所有语言版本保持一致
  • 法律级严谨性: 特别注意日期解析规则,所有语言版本都保持了RFC要求的精确性