4. Constructing Responses from Caches
Wenn eine Anfrage vorgelegt wird, DARF (MUST NOT) ein Cache eine gespeicherte Antwort nicht wiederverwenden, es sei denn:
- Die vorgelegte effektive Anfrage-URI (Abschnitt 5.5 von
[RFC7230]) und die der gespeicherten Antwort stimmen überein, und - die mit der gespeicherten Antwort verknüpfte Anfragemethode erlaubt ihre Verwendung für die vorgelegte Anfrage, und
- die von der gespeicherten Antwort nominierten Auswahl-Header-Felder (falls vorhanden) stimmen mit den vorgelegten überein (siehe Abschnitt 4.1), und
- die vorgelegte Anfrage enthält weder das no-cache-Pragma (Abschnitt 5.4) noch die no-cache-Cache-Direktive (Abschnitt 5.2.1), es sei denn, die gespeicherte Antwort wurde erfolgreich validiert (Abschnitt 4.3), und
- die gespeicherte Antwort enthält nicht die no-cache-Cache-Direktive (Abschnitt 5.2.2.2), es sei denn, sie wurde erfolgreich validiert (Abschnitt 4.3), und
- die gespeicherte Antwort ist entweder:
- frisch (siehe Abschnitt 4.2), oder
- darf veraltet bereitgestellt werden (siehe Abschnitt 4.2.4), oder
- wurde erfolgreich validiert (siehe Abschnitt 4.3).
Beachten Sie, dass jede der oben aufgeführten Anforderungen durch eine Cache-Control-Erweiterung überschrieben werden kann; siehe Abschnitt 5.2.3.
Wenn eine gespeicherte Antwort verwendet wird, um eine Anfrage ohne Validierung zu erfüllen, MUSS (MUST) ein Cache ein Age-Header-Feld (Abschnitt 5.1) generieren und alle in der Antwort vorhandenen durch einen Wert ersetzen, der dem current_age der gespeicherten Antwort entspricht; siehe Abschnitt 4.2.3.
Ein Cache MUSS (MUST) Anfragen mit unsicheren Methoden (Abschnitt 4.2.1 von [RFC7231]) direkt an den Ursprungsserver durchleiten; d. h., ein Cache darf keine Antwort auf eine solche Anfrage generieren, bevor er die Anfrage weitergeleitet und eine entsprechende Antwort erhalten hat.
Beachten Sie außerdem, dass unsichere Anfragen bereits gespeicherte Antworten ungültig machen können; siehe Abschnitt 4.4.
Wenn mehr als eine geeignete Antwort gespeichert ist, MUSS (MUST) ein Cache die neueste Antwort verwenden (wie durch das Date-Header-Feld bestimmt). Er kann die Anfrage auch mit "Cache-Control: max-age=0" oder "Cache-Control: no-cache" weiterleiten, um zu klären, welche Antwort verwendet werden soll.
Ein Cache, der keine Uhr zur Verfügung hat, DARF NICHT (MUST NOT) gespeicherte Antworten verwenden, ohne sie bei jeder Verwendung erneut zu validieren.