【问题标题】:Ensure latest versions of files on Amazon Cloudfront always show in browsers?确保 Amazon Cloudfront 上的最新版本文件始终显示在浏览器中?
【发布时间】:2013-08-25 13:36:06
【问题描述】:

我想完全脱离 S3 + Cloudfront 运行我的网站。每个页面都是一个 .html 文件,每天可以用新内容更新/覆盖一次或两次。我选择了这种架构来减少加载时间。

我的网站包含大约 100 个 .html 文件。我有一个 cronjob,它每天可能更新 15 - 20 个文件,因为新数据被添加到我的数据库中。主页 (index.html) 可能会更频繁地更改。

是否可以始终确保浏览器始终接收我网站的最新版本文件(而不是从浏览器缓存中),同时保留相同的 URL(例如,/index.html、/category/product-name.html),如果有更新吗?

【问题讨论】:

    标签: cdn amazon-cloudfront


    【解决方案1】:

    事实证明,您可以告诉 Cloudfront 遵守其原始标头。因此,假设您将文件上传到充当 Cloudfront 源的 S3 存储桶。可以设置一些headers,如下

    Cache-Control:no-cache no-store max-age=0 must-revalidate
    Expires:0
    

    在上传时,Cloudfront 将尊重这些。

    我将 test.html 文件上传到 S3,在我的 Cloudfront 域上查看它,然后在我将新版本上传到 S3 后,新版本立即在 Cloudfront 上可用。 Cloudfront 将上述 headers 发送给浏览器,因此浏览器遵循缓存规则。

    但是,访问 Cloudfront 上的文件的平均延迟似乎随着这些标头的到位而增加。最初,延迟平均约为 90 毫秒 - 100 毫秒,而使用标头时,延迟约为 110 毫秒。考虑到正常运行时间、托管费用和 110 毫秒的好处,这没什么大不了的。

    【讨论】:

    • 这不是一个很好的方法,因为这意味着您实际上没有使用您的 cdn 的好处 - 几乎每一次命中也会命中原始服务器。有了这么少量的每日更新,我会尝试使用 CloudFront API 来使触摸的 html 失效 - 您每月有 1000 次免费失效,所以这对您来说应该不是问题。
    • @danbars 我使我的 html 无效,它破坏了我的整个网站。此外,为了使您失效,您必须为每个文件付费。
    • @Chad Johnson 这些标题应该在哪里输入?
    • 不确定——时间太长了,不幸的是我忘记了:(我还想知道单独使用标题是否足够,或者是否应该同时使用标题和失效。或者失效就足够了。
    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2022-10-15
    • 2019-02-21
    • 2022-06-12
    相关资源
    最近更新 更多