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
computer:web:cache [2019-02-10 02:48] – [Einträge dem Cache hinzufügen (Cacheability)] skrupelloscomputer:web:cache [2020-11-18 18:11] (current) – external edit 127.0.0.1
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, 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]])] 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 (>= 200Antworten 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.1549763323.txt.gz · Last modified: 2020-11-18 18:10 (external edit)