4.2.1. Calculating Freshness Lifetime (Berechnung der Frischelebensdauer)
Ein Cache kann die Frische-Lebensdauer (bezeichnet als freshness_lifetime) einer Antwort berechnen, indem er die erste Übereinstimmung der folgenden verwendet:
- Wenn der Cache gemeinsam genutzt wird und die s-maxage-Antwortdirektive (Abschnitt 5.2.2.9) vorhanden ist, verwenden Sie ihren Wert, oder
- Wenn die max-age-Antwortdirektive (Abschnitt 5.2.2.8) vorhanden ist, verwenden Sie ihren Wert, oder
- Wenn das Expires-Antwort-Header-Feld (Abschnitt 5.3) vorhanden ist, verwenden Sie seinen Wert minus dem Wert des Date-Antwort-Header-Felds, oder
- Andernfalls ist keine explizite Ablaufzeit in der Antwort vorhanden. Eine heuristische Frische-Lebensdauer könnte anwendbar sein; siehe Abschnitt 4.2.2.
Beachten Sie, dass diese Berechnung nicht anfällig für Uhrenabweichungen ist, da alle Informationen vom Ursprungsserver stammen.
Wenn mehr als ein Wert für eine bestimmte Direktive vorhanden ist (z. B. zwei Expires-Header-Felder, mehrere Cache-Control: max-age-Direktiven), wird der Wert der Direktive als ungültig betrachtet. Caches werden ermutigt, Antworten mit ungültigen Frische-Informationen als veraltet zu betrachten.
4.2.2. Calculating Heuristic Freshness (Berechnung der heuristischen Frische)
Da Ursprungsserver nicht immer explizite Ablaufzeiten bereitstellen, DARF (MAY) ein Cache eine heuristische Ablaufzeit zuweisen, wenn keine explizite Zeit angegeben ist, unter Verwendung von Algorithmen, die andere Header-Feldwerte (wie die Last-Modified-Zeit) verwenden, um eine plausible Ablaufzeit abzuschätzen. Diese Spezifikation stellt keine spezifischen Algorithmen bereit, legt aber Worst-Case-Beschränkungen für ihre Ergebnisse fest.
Ein Cache DARF NICHT (MUST NOT) Heuristiken verwenden, um die Frische zu bestimmen, wenn eine explizite Ablaufzeit in der gespeicherten Antwort vorhanden ist. Aufgrund der Anforderungen in Abschnitt 3 bedeutet dies, dass Heuristiken effektiv nur auf Antworten ohne explizite Frische verwendet werden können, deren Statuscodes standardmäßig als cachefähig definiert sind (siehe Abschnitt 6.1 von [RFC7231]), und solche Antworten ohne explizite Frische, die explizit als cachefähig markiert wurden (z. B. mit einer "public"-Antwortdirektive).
Wenn die Antwort ein Last-Modified-Header-Feld hat (Abschnitt 2.2 von [RFC7232]), werden Caches ermutigt, einen heuristischen Ablaufwert zu verwenden, der nicht mehr als ein Bruchteil des Intervalls seit dieser Zeit beträgt. Eine typische Einstellung für diesen Bruchteil könnte 10% sein.
Wenn eine Heuristik zur Berechnung der Frischelebensdauer verwendet wird, SOLLTE (SHOULD) ein Cache ein Warning-Header-Feld mit einem 113-Warncode (siehe Abschnitt 5.5.4) in der Antwort generieren, wenn sein current_age mehr als 24 Stunden beträgt und eine solche Warnung noch nicht vorhanden ist.
Hinweis: Abschnitt 13.9 von [RFC2616] verbot es Caches, heuristische Frische für URIs mit Abfragekomponenten zu berechnen (d. h. solche, die '?' enthalten). In der Praxis wurde dies nicht weit verbreitet implementiert. Daher werden Ursprungsserver ermutigt, explizite Direktiven zu senden (z. B. Cache-Control: no-cache), wenn sie das Caching verhindern möchten.