Warum sendet der Browser immer noch eine Anforderung für die Cache-Steuerung public mit max-age?
Habe ich auf Amazon S3-Objekte und für jedes Objekt, ich habe
Cache-Control: public, max-age=3600000
Das ist in etwa 41 Tage.
Und ich habe Amazon CloudFront-Verteilung Satz mit Minimum-TTL auch mit 3600000.
Dies ist die erste Anfrage nach dem löschen des cache.
GET /1.0.8/web-atoms.js HTTP/1.1
Host: d3bhjcyci8s9i2.cloudfront.net
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Und die Antwort ist
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Content-Length: 226802
Connection: keep-alive
Date: Wed, 28 Aug 2013 10:37:38 GMT
Cache-Control: public, max-age=3600000
Last-Modified: Wed, 28 Aug 2013 10:36:42 GMT
ETag: "124752e0d85461a16e76fbdef2e84fb9"
Accept-Ranges: bytes
Server: AmazonS3
Age: 342557
Via: 1.0 6eb330235ca3971f6142a5f789cbc988.cloudfront.net (CloudFront)
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: 92Q2uDA4KizhPk4TludKpwP6Q6uEaKRV0ls9P_TIr11c8GQpTuSfhw==
Sogar während Amazon klar sendet Cache-Control, Chrome macht immer noch zweiten Antrag zu Lesen, anstatt es aus dem Cache.
GET /1.0.8/web-atoms.js HTTP/1.1
Host: d3bhjcyci8s9i2.cloudfront.net
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
If-None-Match: "124752e0d85461a16e76fbdef2e84fb9"
If-Modified-Since: Wed, 28 Aug 2013 10:36:42 GMT
Frage:
Warum macht chrome macht die zweite Anforderung?
Abläuft
Dieses Verhalten ändert sich, wenn ich eine explizite Ablauf-Attribut im Header. Browser wird nicht senden Sie die nachfolgende Anfrage für Expires-header, aber für die cache-control public, wird es nicht senden Sie es. Mein all-S3-Objekte wird sich nie ändern, Sie sind unveränderlich, wenn wir die Datei ändern, setzen wir Sie als neues Objekt mit neuer URL.
Seite In Script Referenz
Chrom macht die nachfolgenden Anforderungen nur manchmal, habe ich diesen test tatsächlich die Eingabe der URL im browser. Wenn das Skript verwiesen wird, die von der HTML-Seite, für die paar nachfolgenden Anforderungen chrome lädt Cache-Skripte, aber wieder, nach einiger Zeit, einmal in eine Weile, es sendet Anfrage an den server. Es befindet sich kein Datenträger Größe Problem hier, Chrome hat genügend cache-Speicherplatz.
Problem ist, dass wir geladen, für jede Anfrage, und ich möchte den S3-Objekte zwischengespeichert werden, für immer, und sollte aus dem Cache geladen werden und sollte nie eine Verbindung zum server zurück.
InformationsquelleAutor der Frage Akash Kava | 2013-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die HTTP-Antwort enthält den etag-Eintrag, die bedingte Anforderung werden immer wieder gemacht. ETag ist eine cache-validator-tag. Der client sendet immer die etag an den server, um zu sehen, wenn das element geändert wurde.
InformationsquelleAutor der Antwort woolagaroo
Wenn Sie die Taste F5 in Chrome wird immer senden Anfragen an den server. Diese werden mit der
Cache-Control:max-age=0
header. Die server werden in der Regel reagieren mit einem 304 (Nicht Geändert) status code.Wenn Sie drücken Sie Strg+F5 oder Shift+F5die die gleichen Anforderungen durchgeführt werden, aber mit der
Cache-Control:no-cache
header, so zwingt die server zu senden, eine nicht-Cache-version, in der Regel mit 200 (OK) status code.Wenn Sie wollen, um sicherzustellen, dass Sie nutzen den lokalen browser cache, einfach drücken Sie die Taste Enter in der Adressleiste.
InformationsquelleAutor der Antwort Der Hochstapler
Wenn Chrome Entwicklertools öffnen (F12), Chrom in der Regel deaktiviert Zwischenspeichern.
Es ist steuerbar, in der Developer-Tools-Einstellungen - das ZAHNRAD-Symbol, rechts neben dem dev-tools top-bar.
InformationsquelleAutor der Antwort user3841754
Wenn Sie auf die aktualisieren-Schaltfläche zum laden der jeweiligen Seite oder Ressource, die
if-modified-since
header-Anforderung gesendet wird, jedes mal, wenn Sie fordern stattdessen die Seite/Ressource als eine separate Anforderung in einem neuen tab oder über einen link in ein script oder eine html Seite, lädt die Seite/Ressource aus dem browser-cache selbst.Dies ist, was passiert ist, in meinem Fall, kann dies die Allgemeine, Universelle Fall. Ich bin nicht ganz sicher, aber das ist, was ich mitbekommen habe über meine Graben.
InformationsquelleAutor der Antwort Anirban Roy Das