Antecedentes
Estoy alojando un sitio estático en S3, con CloudFront en la parte superior. El problema que tengo es con mis archivos HTML.
De acuerdo con las preguntas frecuentes de CloudFront :
Amazon CloudFront usa estos encabezados de control de caché para determinar con qué frecuencia necesita verificar el origen de una versión actualizada de ese archivo
Lo que he hecho hasta ahora
Con esto en mente, configuré los archivos HTML en mi S3 Bucket para agregar los siguientes encabezados:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
En mi primera llamada a mi samplefile.htm
, veo los siguientes encabezados de respuesta (he excluido los encabezados obvios (por ejemplo Content-Type
) para mantener el punto:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
Como puede ver, mi Cache-Control
encabezado está allí. El problema es que si actualizo este archivo y actualizo, obtengo el contenido en caché (en lugar del último archivo), y puedo ver que CloudFront está sirviendo su versión en caché mirando los encabezados de respuesta:
X-Cache:Hit from cloudfront
Resumen / pregunta
Con lo anterior en mente, ¿cómo puedo lograr la recuperación automática del último HTML cuando uso CloudFront?
Según sus preguntas frecuentes, debería poder hacer esto con los encabezados Cache-Control, pero parece que no puedo hacer que esto funcione.
Siguiendo las respuestas a continuación
Al final decidí cambiar mi www CNAME para apuntar directamente a mi cubo S3. Luego agregó un nuevo CNAME llamado "estático", que apunta a CloudFront.
Esto significa que HTML es directo desde S3, que luego tiene todas sus referencias CSS / JS / IMG apuntando a static.mydomain.com