Scénario:navigateur (Chrome) ne cache actifs de CloudFront
je installer un distribuition CloudFront d'origine personnalisée (mon serveur) à flux progressif d'une liste de fichiers vidéo MP4.
Ces fichiers sont mis en boucle et lus via l'API vidéo HTML5 native de Chrome. Chaque fois que la vidéo se termine, Chrome fait une autre demande au fichier.
Lors de la lecture du fichier de mon serveur, retourne Chrome
Status Code:206 Partial Content (from cache)
sur chaque demande, alors que lors de la lecture du même fichier à partir CloudFront, met en cache Chrome jamais le fichier et conserve le télécharger à chaque demande!
Ce sont les en-têtes de réponse d'Amazon CloudFront dans Chrome:
HTTP/1.0 206 Partial Content
Date: Mon, 19 Mar 2012 19:47:44 GMT
Server: Apache
Last-Modified: Mon, 19 Mar 2012 12:35:37 GMT
ETag: "a78e87ba-335d8e-4bb97cb9f887f"
Accept-Ranges: bytes
Content-Type: video/mp4
Content-Range: bytes 4228-3366285/3366286
Content-Length: 3362058
Age: 3819
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: xxxxxx
Via: 1.0 xxxxxx.cloudfront.net (CloudFront)
Connection: keep-alive
têtes de réponse en chrome du même fichier de mon serveur (origine):
HTTP/1.1 206 Partial Content
Date: Mon, 19 Mar 2012 20:50:40 GMT
Server: Apache
Last-Modified: Mon, 19 Mar 2012 12:35:37 GMT
ETag: "a78e87ba-335d8e-4bb97cb9f887f"
Accept-Ranges: bytes
Content-Length: 3366286
Content-Range: bytes 0-3366285/3366286
Keep-Alive: timeout=2, max=256
Connection: Keep-Alive
Content-Type: video/mp4
Est-ce que je manque quelque chose?
Peut-être la raison en est l'absence de l'en-tête Keep-Alive
de la réponse CloudFront? ou peut-être dans la version différente du protocole HTTP (1.0 vs 1.1)?
MISE À JOUR:
J'ai aussi ajouté têtes Expires et Cache-contrôles, rien n'a changé. Cela rend tristement inutiledangereux combinant API vidéo HTML5 et Amazon CloudFront.
Une capture d'écran de l'Inspecteur, que vous pouvez voir le fichier est téléchargé à nouveau sur chaque boucle: http://i.imgur.com/0VyZD.jpg
Ceci est une autre capture d'écran avec le fichier chargé à partir du serveur local: http://i.imgur.com/go1zN.jpg
MISE À JOUR 2:
Cela semble ne pas être strictement lié à CloudFront. Après plusieurs tests, il semble Chrome ne cache pas la vidéo si
1) le fichier est plus grand que 2Mb 2) L'en-tête Content-Range
ne démarre pas à 0 (voir exemple ci-dessus differents)
Et je pense Il ne concerne que l'API vidéo HTML5 native et son état de contenu partiel 206.
FTR, signalé à AWS CF dans https://forums.aws.amazon.com/thread.jspa?threadID=96247 – Ami
Existe-t-il une solution de contournement côté client pour cela? Je déteste la façon dont toutes mes vidéos ne seront pas mises en cache. –
Voir aussi: https://forums.aws.amazon.com/thread.jspa?threadID=124998 –