Wiki

A universe of ideas

User Tools

Site Tools


computer:web:cache

This is an old revision of the document!


Caching

Hier werden nur Caching Headers im Response von GET Request behandelt.

Einträge dem Cache hinzufügen (Cacheability)

Algorithmus zur Bestimmung der Cachebarkeit [1]

if(
	Methode speicherbar &&
	Statuscode unterstützt &&
	!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, 404, 405, 410, 414, und 501 [6]

/!\ Mit public können auch POST und Auth Resourcen gecached werden [7][8]. Ohne genaue Erklärung äusert sich auch eBay wie es POST requests cached.

Einträge aus dem Cache löschen (Invalidation)

Einträge aus dem Cache holen

  • Ein GET Eintrag kann eine GET oder eine HEAD Anfrage beantworten [9].
  • Ein HEAD Eintrag kann eine HEAD Anfrage beantworten [10].
  • Ein POST Eintrag kann
    • eine GET Anfrage beantworten, wenn der Eintrag Content-Location gleich der Anfrage URI und den Status-Code 200 hat [11].
    • eine POST Anfrage mit dem selben Body??

Weiteres

Dieser Abschnitt ist noch hochgradig Falsch!

  • public proxy (shared cache) vs private browser cache
  • Neu Laden vs validieren
Cache-Control vom Server Für Funktion Typ
no-cache Immer → validieren Cachability
public Private (V) / Shared (V) Cachability
private Shared Private (V) / Shared (X) 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 (X) / Shared (X) Other
no-transform Gecachten content nicht verändern (z.B. Optimieren) Other
computer/web/cache.1549699534.txt.gz · Last modified: 2020-11-18 18:10 (external edit)