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

Schreibe einen Kommentar