gpt4 book ai didi

caching - 使 CloudFront 上的主干 index.html 的缓存失效

转载 作者:行者123 更新时间:2023-12-02 04:57:54 29 4
gpt4 key购买 nike

我将 CloudFront 分配指向我的 BackboneJS 应用程序。这包括 index.html、master.css、master.js。

步骤:

  1. 将 ?v=ID 附加到 index.html 中的 css 和 js 链接
  2. 将index.html、css、js文件部署到源站。
  3. 使 index.html 文件无效@CloudFront
  4. 等待 CF 从服务器获取新的 index.html 文件并加载新版本的 Assets 。

部署时,我可以通过在索引文件中应用新的查询字符串来破坏 master.css 和 master.js 缓存。不幸的是,必须手动使 index.html 文件缓存失效 - 亚马逊表示这个过程可能需要 10-15 分钟。

有什么技巧可以立即将 index.html 文件更改为 CF 上的最新版本吗?

谢谢!

最佳答案

根据个人经验,我可以告诉您 CloudFront 失效不会花费那么长时间。由于您的用户可能会长时间打开您的页面,因此无论如何您都需要处理同时运行的多个版本的应用程序。

这是一个使用 AWS CLI 使无效并等待无效传播的 Bash 脚本:

# Invalidates the CloudFront cache,
# waits for invalidation to be propagated.
function invalidate_cache() {
local invalidation
local invalidation_id
local distribution_id=$1
local status=""

invalidation=$(aws cloudfront create-invalidation --distribution-id "$distribution_id" --paths '/*')
invalidation_id=$(jq -r .Invalidation.Id <<< "$invalidation")

while [[ $status != "Completed" ]]; do
echo "Waiting for CloudFront invalidation to complete..."
sleep 1
status=$(aws cloudfront get-invalidation --distribution-id "$distribution_id" --id "$invalidation_id"| jq -r .Invalidation.Status)
done
}

如果出于某种原因您总是想确保 index.html 是最新的,那么只需让 CloudFront 根本不缓存它。您可以为 /index.html 创建特定的 CloudFront 行为并将生存时间覆盖为零。

关于caching - 使 CloudFront 上的主干 index.html 的缓存失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19801724/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com