【问题标题】:AWS Cloudfront - How to avoid caching instead of TTL in BrowserAWS Cloudfront - 如何避免在浏览器中缓存而不是 TTL
【发布时间】:2023-03-28 23:04:02
【问题描述】:

我们正在使用 Elastic Beanstalk(NodeJS 脚本)和 Cloudfront 向我们的客户提供 JS 文件。

我们会随每个新版本发送一个新版本号并跟踪请求。我们注意到,有时我们的数据库中的旧版本号查询会持续数周。

我们当然使用 AWS Cloudfront Invalidation,但这似乎并没有解决问题,因为版本在浏览器的缓存中。我们怎样才能理想地解决这个问题?

【问题讨论】:

    标签: amazon-web-services caching amazon-cloudfront cdn browser-cache


    【解决方案1】:

    对此最简单的答案是在 JS 文件请求的末尾添加版本。例如

    <script src="https://example.com/js/myfile.js?v=1"></script>
    

    每次更新你也会更新变量

    <script src="https://example.com/js/myfile.js?v=2"></script>
    

    等等

    其他选项是在文件本身上设置缓存控制标头,告诉它不缓存等,但这依赖于浏览器来尊重这一点,并不总是准确的,通过添加查询变量浏览器/cdn 会认为文件是新的,重新下载。

    这确实要求您的 CDN 在缓存时也尊重查询字符串,因为有些会删除查询字符串等。

    【讨论】:

    • 感谢您的反馈!我们的脚本被放置在超过 900 个网站中,因此每个合作伙伴都必须更改脚本的版本。这对我们不起作用,但总的来说确实是完美的想法。
    • 那么最好的选择是将缓存控制标头设置为“缓存控制:无缓存”(假设 JS 文件是从您的服务器下载的并且您可以控制标头)这个会告诉浏览器不要缓存这个文件,并且会在每次页面加载时请求一个新版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2018-06-16
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多