避免 Cloudfront 缓存我的 angular 应用程序资产

Avoid Cloudfront caching my angular app assets

我已使用 SSL 终止为我的 Web 应用程序设置 CloudFront。后续部署不会立即更新生产,传播更改需要很长时间。如何缩短时间间隔?

几个选项:

  1. 您可以为资产设置较低的 TTL(在云端设置中)。
  2. 如果您想将对象缓存更长时间;并且您的资产 (html/css/js) 不经常更改,那么您可能希望使用 CloudFront 控制台手动清除这些资产。您也可以通过 AWS CLI 使用 AWS 控制台手动执行此操作。
  3. 最简洁的设计是在每个资产中放置一个版本号,例如 js/css 文件。在构建您的 angular 应用程序时使用像 BURP 这样的工具……一些应用程序。1235.js..每当您的资产发生变化时;版本更改并自动重新加载。

CloudFront 和外部提供了多种选项来减少缓存时间

  • 运行 每次部署后失效(这需要大约 15 分钟,但它确保缓存在每次部署后被清理,也可以使用 CloudFront CLI 自动执行)
  • 减少缓存 TTL 值(不推荐,因为它也会减少缓存时间,降低性能)
  • 对于每个部署,通过附加一个随机值并引用应用中的新值来更改文件名。例如 /js/test_23434.js(您可以使用 Gulp 或任何自动化脚本自动执行此操作)
  • 对于每个部署,在文件路径中包含一个查询参数 url 例如 /js/test.js?v=23434 并在 CloudFront 行为配置中启用转发查询参数