Zum Hauptinhalt springen

4 2.Freshness

Eine frische Antwort (Fresh Response) ist eine Antwort, deren Alter ihre Frische-Lebensdauer (Freshness Lifetime) noch nicht überschritten hat. Umgekehrt ist eine veraltete Antwort (Stale Response) eine Antwort, die dies getan hat.

Die Frische-Lebensdauer einer Antwort ist die Zeitdauer zwischen ihrer Erzeugung durch den Ursprungsserver und ihrer Ablaufzeit. Eine explizite Ablaufzeit (Explicit Expiration Time) ist die Zeit, zu der der Ursprungsserver beabsichtigt, dass eine gespeicherte Antwort nicht mehr von einem Cache ohne weitere Validierung verwendet werden kann, während eine heuristische Ablaufzeit (Heuristic Expiration Time) von einem Cache zugewiesen wird, wenn keine explizite Ablaufzeit verfügbar ist.

Das Alter einer Antwort (Age) ist die Zeit, die seit ihrer Erzeugung durch oder erfolgreichen Validierung beim Ursprungsserver vergangen ist.

Wenn eine Antwort im Cache „frisch" ist, kann sie verwendet werden, um nachfolgende Anfragen zu erfüllen, ohne den Ursprungsserver zu kontaktieren, wodurch die Effizienz verbessert wird.

Der primäre Mechanismus zur Bestimmung der Frische besteht darin, dass der Ursprungsserver eine explizite Ablaufzeit in der Zukunft bereitstellt, entweder über das Expires-Header-Feld (Abschnitt 5.3) oder die max-age-Antwortdirektive (Abschnitt 5.2.2.8). Im Allgemeinen weisen Ursprungsserver Antworten zukünftige explizite Ablaufzeiten zu, in der Annahme, dass die Darstellung sich vor Erreichen der Ablaufzeit wahrscheinlich nicht in semantisch signifikanter Weise ändern wird.

Wenn ein Ursprungsserver einen Cache zwingen möchte, jede Anfrage zu validieren, kann er eine explizite Ablaufzeit in der Vergangenheit zuweisen, um anzuzeigen, dass die Antwort bereits veraltet ist. Konforme Caches validieren normalerweise eine veraltete gecachte Antwort, bevor sie sie für nachfolgende Anfragen wiederverwenden (siehe Abschnitt 4.2.4).

Da Ursprungsserver nicht immer explizite Ablaufzeiten bereitstellen, dürfen Caches unter bestimmten Umständen auch eine Heuristik verwenden, um eine Ablaufzeit zu bestimmen (siehe Abschnitt 4.2.2).

Die Berechnung zur Bestimmung, ob eine Antwort frisch ist, lautet:

response_is_fresh = (freshness_lifetime > current_age)

freshness_lifetime ist in Abschnitt 4.2.1 definiert; current_age ist in Abschnitt 4.2.3 definiert.

Clients können die max-age- oder min-fresh-Cache-Direktiven in einer Anfrage senden, um Frischeberechnungen für die entsprechende Antwort einzuschränken oder zu lockern (Abschnitt 5.2.1).

Beim Berechnen der Frische, um häufige Probleme beim Parsen von Daten zu vermeiden:

  • Obwohl alle Datumsformate als groß-/kleinschreibungsempfindlich spezifiziert sind, SOLLTE (SHOULD) ein Cache-Empfänger Tag-, Wochen- und Zeitzonennamen groß-/kleinschreibungsunabhängig abgleichen.
  • Wenn die interne Zeitimplementierung eines Cache-Empfängers eine geringere Auflösung als der Wert eines HTTP-date hat, MUSS (MUST) der Empfänger ein gepartes Expires-Datum intern als die nächstgelegene Zeit darstellen, die gleich oder früher als der empfangene Wert ist.
  • Ein Cache-Empfänger DARF NICHT (MUST NOT) zulassen, dass lokale Zeitzonen die Berechnung oder den Vergleich eines Alters oder einer Ablaufzeit beeinflussen.
  • Ein Cache-Empfänger SOLLTE (SHOULD) ein Datum mit einer Zonenabkürzung außer GMT oder UTC als ungültig für die Berechnung der Ablaufzeit betrachten.

Beachten Sie, dass Frische nur für den Cache-Betrieb gilt; sie kann nicht verwendet werden, um einen User Agent zu zwingen, seine Anzeige zu aktualisieren oder eine Ressource neu zu laden. Siehe Abschnitt 6 für eine Erklärung des Unterschieds zwischen Caches und Verlaufsmechanismen.