【问题标题】:How to version some files如何对某些文件进行版本控制
【发布时间】:2018-06-22 11:52:10
【问题描述】:

我有一个 S3 存储桶,其中包含 index.htmlindex.jsindex.css;静态网站。

我正在使用 CloudFront 分发此 S3 存储桶。

我正在使用 CodePipeline 和 CodeBuild 的组合来更新我的 S3 存储桶中的文件。

使用此设置 - 人们可能会看到我网站的旧版本。我可以做的一件事是设置一个 Lambda,当 CodePipeline 和 CodeBuild 更新 S3 存储桶中的文件时,它会使 CloudFront 中缓存的 S3 存储桶无效。

问题是它很贵,所以我正在寻找替代品。

我想到的一个解决方案是在我的 S3 存储桶中引入一个目录结构,如下所示:

v1
|
 _ index.html
 _ index.js
 _ index.css
v2
|
 _ index.html
 _ index.js
 _ index.css
...

通过此设置,是否可以让 CloudFront 指向我的网站的最新版本?这会比缓存失效更便宜。

【问题讨论】:

标签: amazon-web-services amazon-s3 amazon-cloudfront


【解决方案1】:

我就是这样解决的。

  1. 仅缓存 index.html 5 分钟
  2. 将其余文件缓存一年以上。

构建过程:

  1. 为每个构建创建一个新的哈希
  2. 遵循以下文件名约定
  3. 将 index.html 和所有构建资产复制到同一个文件夹,无需版本控制

这样 index.html 将每 5 分钟从 CloudFront 刷新一次,其余资产将根据请求提供。

index.hash.js
index.hash.css

用生成的哈希替换哈希。

希望对你有帮助。

【讨论】:

  • 但是如果我的 index.html 有变化怎么办
  • 它将每 5 分钟在云端自动刷新一次。浏览器刷新后在客户端缓存时间不会超过 5 分钟。
猜你喜欢
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2022-01-08
  • 2010-12-30
相关资源
最近更新 更多