如何对某些文件进行版本控制

时间:2018-06-22 01:13:34

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

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

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

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

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

问题是价格昂贵,所以我正在寻找替代品。

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

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

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

1 个答案:

答案 0 :(得分:0)

这就是我解决的方法。

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

构建过程:

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

通过这种方式,每5分钟就会从CloudFront刷新index.html,其余资产将根据请求进行投放。

index.hash.js
index.hash.css

用生成的哈希替换哈希。

希望有帮助。