AWS Cloudfront-如何避免浏览器中的缓存而不是TTL



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

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

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

最简单的答案是在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在缓存时也尊重查询字符串,因为有些CDN会丢弃查询字符串等。

最新更新