jat*_*rre 76 cdn amazon-web-services amazon-cloudfront
几周前,亚马逊宣布他们已经降低了内容的有效期:
实际上,您可以将CloudFront中的TTL设置为0.所以我的问题是,为什么将TTL设置为0的CloudFront分配有用.对我而言,这意味着根本没有缓存,因此每个到达CloudFront的请求都是如此.最终会击中原点.
我错过了什么?
Ste*_*pel 152
Amazon CloudFront的这一新功能实际上对于许多用例非常有用,因为与原始视图相比,点击原点的工作方式有点不同,相反,它不一定是个问题.虽然此功能早已发布,但最新版本的Amazon CloudFront - 支持动态内容,例如针对手头的问题:
可变生存时间(TTL) - 在许多情况下,动态内容要么不可缓存,要么可以在很短的时间内缓存,可能只需几秒钟.过去,CloudFront的最小TTL为60分钟,因为所有内容都被认为是静态的.新的最小TTL值为0秒.如果将特定原点的TTL设置为0,CloudFront仍将缓存来自该原点的内容.然后,它将使用If-Modified-Since标头发出GET请求,从而使源有机会发信号通知CloudFront可以继续使用缓存内容(如果它在原点未更改).[强调我的]
换句话说,使用0的TTL主要意味着,CloudFront将缓存控制的权限委托给源,即源服务器决定是否以及CloudFront缓存对象的时间长短; 请特别注意,带有If-Modified-Since标头的GET请求并不一定意味着对象本身是从源检索的,而是源可以(并且应该)返回HTTP状态码304 -如果适用,则不修改:
表示自上次请求后资源未被修改.[...] 使用它可以在服务器和客户端上节省带宽和重新处理,因为与服务器重新处理的整个页面相比,必须仅发送和接收标头数据,然后使用更多带宽再次发送服务器和客户端. [强调我的]
有关HTTP缓存控制的机制和优点的详细信息,请参阅Mark Nottingham的优秀缓存教程,这是HTTP体系结构中非常重要且有效的部分.
了解所有这些部分是如何一起工作可能会有点困难的确,因此该表中部分指定的最小时间CloudFront的缓存对象的下载分布内指定对象如何长期停留在一个CloudFront的边缘缓存(对象过期)试图总结的影响当在具有或不具有TTL = 0的CloudFront的上下文中应用时.
小智 5
请注意,亚马逊并不是说“TTL 为 0”,而是说“最小 TTL 为 0”。这是非常不同的。上面的描述非常可取,但不能保证 Cloudfront 确实做到了。
根据我现在的经验,我可以看到缓存的图像在边缘停留了几分钟,而我的原点已经改变了。
所以,我认为说“最小 TTL 为 0”可能更像是“亚马逊没有严格的意图将它保存在缓存中”,也许“它会经常重新获取”。
对于像 CMS 这样的应用程序,Web 用户正在发布新内容,我认为 TTL-0 仍然不够。您仍然必须从 CMS 调用失效或为不同的版本号使用不同的路径。
归档时间: |
|
查看次数: |
24298 次 |
最近记录: |