强制使用 CloudFront 转移最后一个HTML文件 S3

背景

我放一个静态网站 S3 从 CloudFront 最佳。 我的HTML文件有问题。

依据
http://aws.amazon.com/cloudfro ... files
:

Amazon CloudFront 使用这些Cashe Control Elements标头来确定检查此文件更新版本所需的频率。

我仍然是什么

考虑到这一点,我在我的中安装了HTML文件 S3 Bucket, 要添加以下标题:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT

我的第一次打电话给我

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

恢复 / 问题

考虑到上述情况,因为我可以实现自动获取最新版本 HTML 使用 CloudFront?

根据他常见的问题,我可以用头条新闻 Cache-Control, 但我无法做到它。

遵循以下答案

最后,我决定改变我的 www CNAME, 所以他直接指着我的篮子 S3. 然后添加了新的 CNAME 题为 «static», 表明 CloudFront.

代表着 HTML 直接从 S3, 所有链接 CSS / JS / IMG 指向 static.mydomain.com
已邀请:

二哥

赞同来自:

我相信目前的答案,虽然当时的正确,现在已经过时了,因为 Cloudfront 现在支持最低限度 TTL, 平等的 0, 和来源尝试 OP 使用 cache-age = 0 现在应该有效。

您可以研究这些其他头条新闻是否用于控制Cashem,了解您是否会给您要找的结果 - 你可能只需要 max-age. 你可能想要 Cloudfront 检查一下 S3, 看该文件是否已更改 HTML. 如是, Cloudfront 可以得到并返回一个新文件。 否则,他可以从现有的缓存服务客户端 (节省带宽 S3 并使客户端更快地提供服务).

一个任务 Cloudfront - 服务缓存内容,是的,但现在它打开有时更改的内容,但如果它没有更改,可以缓存。

P.s. 请求行也在合作 Cloudfront (如果您为相关来源配置了“行为” - 另一个新功能), 但是,某些代理服务器仍可能无法缓存具有查询字符串的任何文件。

开发人员指南 Amazon: 有效性
http://docs.amazonwebservices. ... .html

风见雨下

赞同来自:

首先,目标 Cloudfront - 保持缓存的内容 - 如果您尝试提供非设备的内容 Cloudfront, 它比直接从中服务它会慢 S3, 几乎在所有情况下 (像流媒体内容这样的东西将是一个例外). 思考一下,维护内容应该发生什么 Cloudfront - 必须从源服务器获得到位置,该位置在地理上靠近用户,这意味着请求在其中 Cloudfront 必须从源服务器获取内容 , 您在查询中添加了额外的延迟,并且用户获取内容较慢。 只有在外围内容可用时,才会更快地执行后续请求。

这个问题的最佳方法 - 升级页面时更改文件名 - 它将力量 Cloudfront 删除新内容。 再次,请记住 Cloudfront 通常用于多媒体文件。 (包括图像) 和 style / javascript - 而不是很多 html. 实质上,您的HTML代码将是 S3, 和你的图像 - 在 Cloudfront - 凭借您所做的任何更改,您可以更改文件的名称 Cloudfront (例如, file-v1.jpg, file-v2.jpg 等等。). 另一种常见的方式 - 使用版本信息启用查询字符串。

还要记住 Cloudfront 不适用于压缩 gzip 内容,它可以导致比通常的服务器慢的响应较慢 (虽然在你的情况下 S3 也不识别浏览器支持 gzip).

最后,如果您愿意,您可以使用取消强制 Cloudfront 拒绝您现有的副本并从源服务器获取新的副本。 但是,请注意 Cloudfront 只给你一个 1000 每月免费取消,之后成本是 0,005 美元取消。

最短的时间 Cloudfront 将存储内容 -
http://aws.typepad.com/aws/201 ... .html
, 虽然安装了默认值 24 小时。 因此,我会尝试安装 max-age 至少在上面 3600. 考虑标题 s-maxage (一般来说,即加工的内容). Amazon 推荐
http://www.mnot.net/cache_docs/
Keching教科书。

曾是
https://forums.aws.amazon.com/ ... 77954
有了这个,几天前修正了

小姐请别说爱

赞同来自:

不知该如何 CloudFront 处理标题以及您的标题,但如果您未指定标题,则默认对象更新时间是 24 点钟。

您可以做更新对象的一件事, - 它使它无效。 按照下面的链接获取更多信息。
http://blog.cloudberrylab.com/ ... .html

要回复问题请先登录注册