根据个人经验,我可以告诉您 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 根本不缓存它。您可以创建特定的 CloudFront 行为/index.html
并将生存时间覆盖为零。