fundo
Estou hospedando um site estático no S3, com o CloudFront por cima. O problema que tenho é com meus arquivos HTML.
De acordo com as Perguntas frequentes do CloudFront :
O Amazon CloudFront usa esses cabeçalhos de controle de cache para determinar com que frequência ele precisa verificar a origem de uma versão atualizada desse arquivo
O que eu fiz até agora
Com isso em mente, configurei os arquivos HTML no meu S3 Bucket para adicionar os seguintes cabeçalhos:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Na minha primeira chamada para o meu samplefile.htm
, vejo os seguintes cabeçalhos de resposta (excluí cabeçalhos óbvios (por exemplo Content-Type
)) para manter o ponto:
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 você pode ver, meu Cache-Control
cabeçalho está lá. O problema é que, se eu atualizar esse arquivo e atualizar, recebo o conteúdo em cache (em vez do arquivo mais recente), e vejo que o CloudFront está servindo sua versão em cache observando os cabeçalhos de resposta:
X-Cache:Hit from cloudfront
Resumo / pergunta
Com o exposto acima, como posso obter a recuperação automática do HTML mais recente ao usar o CloudFront?
De acordo com as perguntas frequentes, devo conseguir fazer isso com os cabeçalhos de controle de cache, mas não consigo fazer isso funcionar.
Seguindo as respostas abaixo
No final, decidi alterar meu www CNAME para apontar diretamente para meu bucket S3. Em seguida, adicionou um novo CNAME chamado "estático", que aponta para o CloudFront.
Isso significa que o HTML é direto do S3, que possui todas as suas referências CSS / JS / IMG apontando para static.mydomain.com