Wiki

A universe of ideas

User Tools

Site Tools


computer:web:cache

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
computer:web:cache [2019-02-09 09:05] – [Einträge aus dem Cache holen] skrupelloscomputer:web:cache [2019-02-10 07:18] skrupellos
Line 5: Line 5:
  
 ===== Einträge dem Cache hinzufügen (Cacheability) ===== ===== Einträge dem Cache hinzufügen (Cacheability) =====
 +
 +<WRAP center round info 80%>
 +Dieses Kapitel behandelt die //Cache-Control// direktiven
 +  * public
 +  * private
 +  * no-store
 +  * (max-age)
 +  * (s-maxage)
 +</WRAP>
  
 Algorithmus zur Bestimmung der Cachebarkeit [([[https://www.greenbytes.de/tech/webdav/rfc7234.html#response.cacheability]])] Algorithmus zur Bestimmung der Cachebarkeit [([[https://www.greenbytes.de/tech/webdav/rfc7234.html#response.cacheability]])]
 <code> <code>
 if( if(
- Methode speicherbar && + Methode speicherbar und unterstützt vom cache && 
- Statuscode unterstützt &&+ Statuscode unterstützt vom cache && 
 + Statuscode != 1xx &&
  !request.no-store &&  !request.no-store &&
  !response.no-store &&  !response.no-store &&
Line 34: Line 44:
   * GET [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.1.p.5]])]   * GET [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.1.p.5]])]
   * HEAD [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.2.p.3]])]   * HEAD [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.2.p.3]])]
-  * POST mit explicit freshness information (s. [[https://www.greenbytes.de/tech/webdav/rfc7234.html#calculating.freshness.lifetime|Calculating Freshness Lifetime]]) [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.3.p.4]])]+  * POST mit explicit freshness information (s. [[https://www.greenbytes.de/tech/webdav/rfc7234.html#calculating.freshness.lifetime|Calculating Freshness Lifetime]]) [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.3.p.4]])]. Dazu gibts eine [[https://www.mnot.net/blog/2012/09/24/caching_POST|weitere Erklärung]] und ein [[https://www.ebayinc.com/stories/blogs/tech/caching-http-post-requests-and-responses/|Beispiel]] von eBay.
  
-Zu den Statuscodes die standardmäßig cachebar sind gehören unter anderem: 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, und 501 [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.1.p.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 [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.1.p.2]])][([[https://www.greenbytes.de/tech/webdav/rfc7538.html#rfc.section.3.p.3]])]
- +
-/!\ Mit ''public'' können auch POST und Auth Resourcen gecached werden [(https://www.mnot.net/blog/2012/09/24/caching_POST)][([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.3.p.4]])]. Ohne genaue Erklärung äusert sich auch eBay wie es [[https://www.ebayinc.com/stories/blogs/tech/caching-http-post-requests-and-responses/|POST requests cached]].+
  
 +Die ''Statuscode != 1xx'' Einschränkung kommt aus dem [[https://greenbytes.de/tech/webdav/draft-ietf-httpbis-cache-03.html#rfc.section.3|aktuellen draft]] und sorgt dafür das nur finale (>= 200) Antworten gespeichert werden.
  
 ===== Einträge aus dem Cache löschen (Invalidation) ===== ===== Einträge aus dem Cache löschen (Invalidation) =====
Line 45: Line 54:
  
 ===== Einträge aus dem Cache holen ===== ===== Einträge aus dem Cache holen =====
 +<WRAP center round info 80%>
 +Dieses Kapitel behandelt die //Cache-Control// direktiven
 +  * no-cache
 +</WRAP>
  
 +<code>
 +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
 +}
 +</code>
 +
 +==== passtZusammen(Anfrage_Methode, Eintrag_Methode) ====
   * Ein GET Eintrag kann eine GET oder eine HEAD Anfrage beantworten [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.1.p.5]])].   * Ein GET Eintrag kann eine GET oder eine HEAD Anfrage beantworten [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.1.p.5]])].
   * Ein HEAD Eintrag kann eine HEAD Anfrage beantworten [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.2.p.3]])].   * Ein HEAD Eintrag kann eine HEAD Anfrage beantworten [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.2.p.3]])].
Line 52: Line 86:
     * eine POST Anfrage mit dem selben Body??     * eine POST Anfrage mit dem selben Body??
  
 +|                 |^ Eintrag                                                                                                     ||| 
 +| :::             | :::   ^ GET      ^ HEAD  ^ POST                                                                                       ^ 
 +^ Anfrage  ^ GET   | (V)      | (X)   | (V), wenn der Eintrag Content-Location gleich der Anfrage URI und den Status-Code 200 hat [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.3.3.p.4]])] | 
 +| :::      ^ HEAD  | (V)      | (V)   | ??                                                                                         | 
 +| :::      ^ POST  | (X)      | (X)   | ( (V) )?? s. eBay Beispiel                                                                 |
 ===== Weiteres ===== ===== Weiteres =====
  
computer/web/cache.txt · Last modified: 2020-11-18 18:11 by 127.0.0.1