Pourquoi ne Navigateur envoie toujours demande pour cache-control public avec max-age?

J'ai objets Amazon S3, et pour chaque objet, j'ai mis

Cache-Control: public, max-age=3600000

Qui est approximativement 41 jours.

Et j'ai de Distribution Amazon CloudFront ensemble avec un Minimum TTL aussi avec 3600000.

C'est la première demande après effacement de la mémoire 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

Et la Réponse est

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==

Alors même que Amazon envoie clairement Cache-Control, Chrome encore fait un deuxième demande au lieu de la lire à partir du 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

Question:
Pourquoi chrome deuxième demande?

Expire
Ce comportement change quand je mets explicite de l'Expiration de l'attribut dans les en-têtes. Le navigateur ne sera pas envoyer de demande subséquente de l'en-tête Expires, mais pour le cache-contrôle public, de l'envoyer. Tous mes objets S3 ne changera jamais, ils sont immuables, lors du changement de fichier, nous les mettons en tant que nouvel objet avec la nouvelle URL.

De La Page De Référence De Script
Chrome fait les demandes suivantes seulement parfois, j'ai fait ce test en tapant l'URL dans le navigateur. Lorsque le script est référencé par page HTML, pour quelques demandes subséquentes chrome charges de mise en cache des scripts, mais une fois de plus, après un certain temps, une fois qu'il envoie une requête au serveur. Il n'y a pas de problème de Taille de Disque ici, Chrome dispose de suffisamment d'espace de cache.

Problème est que nous facturé pour chaque demande, et je veux S3 objets mis en cache pour toujours, et doivent être chargés à partir du Cache et ne doit jamais se connecter à un serveur en arrière.

InformationsquelleAutor Akash Kava | 2013-09-01