Escenario:navegador (Chrome) hace activos no caché de CloudFront
I fijó un distribuition Cloudfront de origen personalizado (mi servidor) a la corriente progresiva una lista de archivos de vídeo MP4.
Estos archivos se envían en bucle y se reproducen a través de la aplicación de video HTML5 nativa de Chrome. Cada vez que finaliza el video, Chrome realiza otra solicitud al archivo.
Al reproducir el archivo de mi servidor, Chrome vuelve
Status Code:206 Partial Content (from cache)
en cada petición, mientras que cuando se reproduce el mismo archivo desde CloudFront, Chrome nunca se almacena en caché los archivos y mantiene descargándolo en cada petición!
Estas son las cabeceras de respuesta de Amazon CloudFront en 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
encabezados de respuesta en Chrome del mismo archivo de mi servidor (origen):
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
Me estoy perdiendo algo?
¿Quizás el motivo se deba a la falta del encabezado Keep-Alive
de la respuesta de CloudFront? o tal vez en la versión del protocolo HTTP diferente (1.0 vs 1.1)?
ACTUALIZACIÓN:
También he añadido expira y Cache-Controles cabeceras, nada cambió. Esto tristemente hace que inútilpeligroso combinando api de video HTML5 y Amazon CloudFront.
Una captura de pantalla del inspector, como se puede ver el archivo se vuelve a descargar en cada bucle: http://i.imgur.com/0VyZD.jpg
Ésta es otra captura de pantalla con el archivo cargado desde el servidor local: http://i.imgur.com/go1zN.jpg
ACTUALIZACIÓN 2:
Parece que no está estrictamente relacionado con CloudFront. Después de varias pruebas, parece Chrome no almacena en caché el vídeo si
1) el archivo es más grande que 2Mb 2) La cabecera Content-Range
no se inicia a 0 (véase el ejemplo differentes arriba)
Y creo solo está relacionado con la API de video HTML5 nativa y su 206 Estado de contenido parcial.
FTR, reportado a AWS CF en https://forums.aws.amazon.com/thread.jspa?threadID=96247 – Ami
¿Hay alguna solución del lado del cliente para esto? Odio cómo todos mis videos no se almacenarán en caché. –
Vea también: https://forums.aws.amazon.com/thread.jspa?threadID=124998 –