首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使CloudFront上的主干CloudFront缓存无效

使CloudFront上的主干CloudFront缓存无效
EN

Stack Overflow用户
提问于 2013-11-06 00:18:59
回答 2查看 883关注 0票数 3

我将一个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文件并加载新版本的资产。

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

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

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-11-16 15:38:33

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

下面是一个使用AWS使之失效的Bash脚本,并等待无效声明的传播:

代码语言:javascript
复制
# 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行为,并将存活时间覆盖为零。

票数 0
EN

Stack Overflow用户

发布于 2018-11-20 08:28:30

使cloudfront缓存无效不是一个占用时间的过程。不会花太长时间。不过,您可以有多种方法来监视无效状态。

在cloudfront完成缓存无效后,还可以使用lambda函数更新下游组件/系统。

尽管如此,如果需要实时更新index.html,则可以选择不将其作为cloudfront缓存的一部分。您可能想在cloudfront的行为设置中设置它。可以将TTL设置为0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19801724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档