我将一个CloudFront发行版指向我的BackboneJS应用程序。这包括index.html,master.css,master.js。
步骤:
在部署时,可以通过在索引文件中应用新的查询字符串来关闭master.css和master.js缓存。不幸的是,index.html文件缓存必须手动失效-亚马逊说这个过程可能需要10-15分钟。
有什么提示可以立即将index.html文件更改为CF上的最新版本?
谢谢!
发布于 2018-11-16 15:38:33
根据个人经验,我可以告诉您,CloudFront失效不会花那么长时间。因为您的用户可能会让您的页面长期处于打开状态,所以无论如何您需要处理多个同时运行的应用程序版本。
下面是一个使用AWS使之失效的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完全不缓存它。您可以为CloudFront创建一个特定的/index.html行为,并将存活时间覆盖为零。
发布于 2018-11-20 08:28:30
使cloudfront缓存无效不是一个占用时间的过程。不会花太长时间。不过,您可以有多种方法来监视无效状态。
在cloudfront完成缓存无效后,还可以使用lambda函数更新下游组件/系统。
尽管如此,如果需要实时更新index.html,则可以选择不将其作为cloudfront缓存的一部分。您可能想在cloudfront的行为设置中设置它。可以将TTL设置为0。
https://stackoverflow.com/questions/19801724
复制相似问题