html - 您如何使用 cloudfront 使托管在 S3 上的静态站点的 index.html 缓存无效?

标签 html amazon-web-services amazon-s3 cdn amazon-cloudfront

所以我在 s3 上使用云端 dist 托管了我的 Angular 应用程序。我进行文件修订(使用 grunt filerev)以确保我永远不会得到陈旧的内容。但是,我应该如何对 index.html 文件进行版本控制。它是必需的,因为在 index.html 中引用了所有其他文件。

我已将我的存储桶配置为用作静态站点。因此,当我在 url 中引用存储桶时,它只会获取 index.html。

Cloudfront 说您应该将最小 TTL 设置为 0,这样它就会始终命中源以提供内容。但是,我不需要这个,因为我正在对所有文件(index.html 除外)进行文件修订。我可以利用这些文件的 cdn 缓存。

他们还说,为了使单个对象无效,请将 max-age header 设置为 0。我尝试将以下内容添加到我的 index.html

<meta http-equiv="Cache-Control" content="public, must-revalidate, proxy-revalidate, max-age=0"/>

但是一旦你在 s3 上上传,这就不会反射(reflect)出来。我是否需要使用 s3cmd 或仪表板在 s3 上显式设置 header ?每次 index.html 发生变化并上传时,我都需要这样做吗?

我知道我可以使用 cmd 使单个文件无效,但它是一个重复的过程,如果它可以通过部署在 s3 上来处理自己,那就太好了。

最佳答案

尽管如果您使用的是 s3cmd,则接受的答案是正确的,但我使用的是 AWS CLI,所以我所做的是以下 2 个命令:

首先,实际部署代码:

aws s3 sync ./ s3://bucket-name-here/ --delete

然后,在 CloudFront 上创建失效:

aws cloudfront create-invalidation --distribution-id <distribution-id> --paths /index.html

关于html - 您如何使用 cloudfront 使托管在 S3 上的静态站点的 index.html 缓存无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427518/

相关文章:

javascript - 隐藏可见性的输入字段值未发布

javascript - 使用 JavaScript SDK 的 AWS Cognito 开发人员身份验证

ubuntu - 无法以 root 身份通过 SSH 进入 EC2 服务器 - 请以用户 "ubuntu"而不是用户 "root"登录

hadoop - s3 上的 Spark 数据集 Parquet 分区创建临时文件夹

amazon-web-services - 如何配置automate_aws_accounts_creation_sso_users_assignment.yaml以在我选择的区域中运行?

amazon-web-services - 使用 EC2 在 S3 上备份

html - 需要让我的文字适合 div 图像

javascript - 如何防止在javascript中自动多次调用onchange函数?

javascript - 单击链接时使内容滑入和滑出?

python - 将静态(对于 Django 项目)上传并使用到 AWS S3