背景
我在S3上托管一个静态站点,而CloudFront位于顶部。我的问题是我的HTML文件。
Amazon CloudFront使用这些缓存控制标头来确定它需要多久检查一次该文件的更新版本的来源
到目前为止我做了什么
考虑到这一点,我在S3存储桶中设置了HTML文件,以添加以下标头:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
在第一次致电my时samplefile.htm
,我看到以下响应标头(Content-Type
为了明确说明起见,我已经排除了明显的标头(例如):
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
如您所见,我的Cache-Control
标题位于其中。问题是,如果我更新此文件并刷新,则会得到缓存的内容(而不是最新的文件),并且通过查看响应头可以看到CloudFront正在提供其缓存的版本:
X-Cache:Hit from cloudfront
摘要/问题
考虑到上述问题,使用CloudFront时如何实现自动检索最新的HTML?
根据其常见问题解答,我应该可以使用Cache-Control标头来执行此操作,但似乎无法正常工作。
遵循以下答案
最后,我决定将www CNAME更改为直接指向我的S3存储桶。然后添加了一个名为“ static”的新CNAME,它指向CloudFront。
这意味着HTML直接来自S3,然后S3的所有CSS / JS / IMG引用均指向static.mydomain.com