Hier werden nur Caching Headers im Response von GET Request behandelt.
Dieses Kapitel behandelt die Cache-Control direktiven
Algorithmus zur Bestimmung der Cachebarkeit [1]
if( Methode speicherbar und unterstützt vom cache && Statuscode unterstützt vom cache && Statuscode != 1xx && !request.no-store && !response.no-store && (shared => !response.private) && ( (shared => !request.Authorization) || unless the response explicitly allows it (see Section 3.2) ) && ( response.Expires || response.max-age || (shared && response.s-maxage) || (response.Cache-Control Extension (see Section 5.2.3) that allows it to be cached) || (response.status.cacheable_by_default) || (response.public) ) ) { Vermutlich Speichern } else { Definitiv nicht speichern }
Speicherbare Methoden sind [2]:
Zu den Statuscodes die standardmäßig cachebar sind gehören unter anderem: 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, und 501 [6][7]
Die Statuscode != 1xx
Einschränkung kommt aus dem aktuellen draft und sorgt dafür das nur finale (>= 200) Antworten gespeichert werden.
Dieses Kapitel behandelt die Cache-Control direktiven
if( Anfrage.URI == Eintrag.URI && passtZusammen(Anfrage.Methode, Eintrag.Methode) && Alle Header des Eintrags passen zu denen der Anfrage && ( (Anfrage.Pragma.no-cache || Anfrage.Cache-Control.no-cache) => erfolgreiche validierung von Eintrag ) && ( Eintrag.Cache-Control.no-cache => erfolgreiche validierung von Eintrag ) && ( Eintrag.fresh || Eintrag.can_be_served_stale (see Section 4.2.4) || erfolgreiche validierung von Eintrag ) ) { Eintrag verwenden } else { Eintrag nicht verwenden }
Content-Location
gleich der Anfrage URI und den Status-Code 200 hat [10].
Eintrag | ||||
---|---|---|---|---|
GET | HEAD | POST | ||
Anfrage | GET | , wenn der Eintrag Content-Location gleich der Anfrage URI und den Status-Code 200 hat [11] | ||
HEAD | ?? | |||
POST | ( )?? s. eBay Beispiel |
Dieser Abschnitt ist noch hochgradig Falsch!
Cache-Control vom Server | Für | Funktion | Typ |
---|---|---|---|
no-cache | Immer → validieren | Cachability | |
public | Private / Shared | Cachability | |
private | Shared | Private / Shared | Cachability |
max-age=<seconds> | Private / Shared | Relative Cache Zeit | Expiration |
s-maxage=<seconds> | Shared | Relative Cache Zeit (vorrang vor Expires und s-maxage ) | Expiration |
must-revalidate | Private / Shared | Abgelaufen → validieren | Re{validate,loading} |
proxy-revalidate | Shared | Abgelaufen → validieren | Re{validate,loading} |
immutable | Nicht abgelaufen → verwenden (auch bei F5, aber nicht bei Shift+F5) / Abgelaufen →Nicht verwenden [12] | Re{validate,loading} | |
no-store | Cachability: Private / Shared | Other | |
no-transform | Gecachten content nicht verändern (z.B. Optimieren) | Other |