【发布时间】:2017-03-21 14:55:34
【问题描述】:
我正在为我的 javascript 和 css 文件实施 AWS Cloudfront 版本控制,以便自动更新 Cloudfront 缓存,这样我就不必手动使我的文件失效。我在 S3 中托管一个静态网站内容。我部署新更改的过程如下。使用 webpack 构建网站,它会自动对我的 js 和 css 文件进行哈希处理。 Webpack 还会更新我的 index.html 文件中对 js 和 css 文件的引用(不是这个文件没有版本控制)。然后我将新生成的静态网站从我的 dist 文件夹复制到我的 S3 存储桶。根据文档,我应该自动看到我的更改,而不必使分发中的每个文件都无效,但我没有。我想知道我是否错过了一步。起初我认为可能 index.html 需要版本化,但文档明确说明不要版本化根文档对象。所以我的问题是......我错过了什么?具有我的新版本的 js 和 css 文件的 index.html 文件是否也需要版本化?如果是这样,我该如何做到这一点?
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ReplacingObjects.html
第 46 页:https://d0.awsstatic.com/whitepapers/Storage/Building%20Static%20Websites%20on%20AWS.pdf
【问题讨论】:
-
“根据文档,我应该会自动看到我的更改,而不必使分发中的每个文件都无效” 根据哪个文档,在哪里?请引用。
-
docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/… "使用版本控制,您不必等待对象过期,CloudFront 开始提供它的新版本,并且您不必为对象失效付费。 "
-
知道了。这里的基本假设是您的 index.html 文件将具有由其
Cache-Control标头指定的适当较短的生命周期,因此浏览器和 CloudFront 不会缓存它,因为它们将缓存版本化资产。 -
对,所以这意味着我每次上传新的 index.html 时都需要添加 cli/api 调用来更新 Cache-Control。我可以做到这一点,但这似乎很乏味。如果 index.html 被替换,那么所有的自定义属性也会被替换。
-
您可以在上传文件到 S3 时设置所有元数据,包括上传请求中的
Cache-Control。无需再次请求。
标签: amazon-s3 amazon-cloudfront