Amazon web services CloudFront中的TTL0有什么用处?

Amazon web services CloudFront中的TTL0有什么用处?,amazon-web-services,cdn,amazon-cloudfront,Amazon Web Services,Cdn,Amazon Cloudfront,几周前,亚马逊宣布他们已经降低了内容的有效期: 如此之多以至于您现在可以将CloudFront中的TTL设置为0。所以我的问题是,为什么将TTL设置为0的CloudFront发行版会有用。对我来说,这意味着根本没有缓存,因此每个到达CloudFront的请求最终都会到达源 我遗漏了什么?的这一新功能实际上对许多用例都非常有用,因为击中原点的工作原理与乍一看有点不同,相反,这不一定是个问题;虽然此功能已在较早的时候发布,但它与的最新版本一起发布,例如,对于手头的问题: 可变生存时间(TTL)-在

几周前,亚马逊宣布他们已经降低了内容的有效期:

如此之多以至于您现在可以将CloudFront中的TTL设置为0。所以我的问题是,为什么将TTL设置为0的CloudFront发行版会有用。对我来说,这意味着根本没有缓存,因此每个到达CloudFront的请求最终都会到达源

我遗漏了什么?

的这一新功能实际上对许多用例都非常有用,因为击中原点的工作原理与乍一看有点不同,相反,这不一定是个问题;虽然此功能已在较早的时候发布,但它与的最新版本一起发布,例如,对于手头的问题:

可变生存时间(TTL)-在许多情况下,动态内容 可能在很短的时间内不可缓存或不可缓存 就几秒钟。过去,CloudFront的最低TTL为60 所有内容被视为静态后的分钟数。新的最小TTL 值为0秒如果将特定原点的TTL设置为0, CloudFront仍将缓存来自该来源的内容到时候会的 使用If-Modified-Since头发出GET请求,从而给出 原点有机会发出信号,表明CloudFront可以继续使用 缓存内容(如果在源位置未更改)。[我的重点]

换句话说,使用0的TTL主要意味着CloudFront将缓存控制权限委托给源服务器,即源服务器决定是否以及CloudFront是否缓存对象以及缓存多长时间;请特别注意,带有If-Modified-Since标头的GET请求并不一定意味着对象本身是从源站检索的,而是源站可以(并且应该)在适用的情况下返回:

表示自上次请求后资源未被修改。[...] 使用此选项可以节省服务器和服务器上的带宽和重新处理 客户端,因为只有标头数据必须在中发送和接收 与正在由重新处理的整个页面进行比较 服务器,然后使用服务器和客户端的更多带宽再次发送。[我的重点]

有关HTTP缓存控制的机制和好处的详细信息,请参阅MarkNottingham的《卓越》,HTTP缓存控制是HTTP体系结构中非常重要和有效的一部分


理解所有这些部分如何协同工作确实有点困难,相应地,第节中的表格指定了CloudFront缓存对象以供下载分发的最短时间,该表格试图总结在CloudFront上下文中应用TTL=0或不使用TTL=0时的效果。

注意,Amazon并没有说“TTL为0”,而是说“最小TTL为0”。这是非常不同的。上面的描述非常理想,但不能保证Cloudfront确实做到了这一点

根据我目前的经验,我可以看到缓存的图像在边缘停留几分钟,而我的原始图像已经更改

所以,我认为说“最小TTL为0”可能更像是“亚马逊没有严格的意图将其保存在缓存中”,或者“它将经常重新蚀刻”


对于像CMSs这样的应用程序,web用户正在发布新内容,我认为TTL-0仍然不够。您仍然必须从CMS中调用失效,或者为不同的版本号使用不同的路径。

CloudFront可以与证书管理器结合使用,以向S3网站添加HTTPS支持。您可能需要这种方式,但不需要缓存。

另一个使用这种方式的用例是,如果您希望使用lambda边缘操作不可缓存内容的请求头。示例
x-api-key

这是一个极好的响应。知道了!谢谢Steffen!一个绝对彻底的书面回答。AWS应该把这个放在他们的文档中!!!哈解释得很好。真的+10的简单性和使用的术语。