我试图了解cloudfront和CDN的工作原理。 如果我有一个文件,缓存控制标题设置为1年,我使用亚马逊云前端作为我的CDN。 如果我删除文件会怎么样?是否仍然可以服务,因为它是由云端服务器缓存的?它是否会在世界上的所有位置提供,或者只在请求过一次时才会缓存在边缘服务器上。
示例我在Amazon Cloud Front后面有一个文件 blue.jpg,缓存控制标头设置为1年
我从纽约的一个地方访问该文件
然后删除该文件。
如果我再次从纽约访问包含该文件的页面,该文件是否会作为其缓存服务?
如果有人随后使用俄罗斯莫斯科的文件访问该页面,该怎么办?他能查看文件吗?
感谢您的帮助:)
答案 0 :(得分:1)
CloudFront只是一个靠近用户的缓存集合。每个边缘位置都是独立运行的。
默认情况下,CloudFront会遵循您的http缓存控制标头。如果您设置标题以使文件在一年内不会过期,则CloudFront将继续提供该文件一年而不会检查您的原始服务器。
由于每个边缘位置独立运行,在您的示例中,纽约将继续提供该文件,但莫斯科将该文件删除(404)。由于您可以成像,这可能会导致不同的用户看到不同的内容。
有策略可以避免这个问题。
来自CloudFront文档(http://aws.amazon.com/cloudfront/#details):
对象版本控制和缓存失效 您有两种方法可以更新在Amazon CloudFront边缘位置缓存的文件。您可以使用对象版本控制来管理对内容的更改。要实现对象版本控制,可以在源服务器中为文件的每个版本创建唯一的文件名,并使用与网页或应用程序中正确版本对应的文件名。借助这种技术,Amazon CloudFront可以缓存您想要的对象版本,而无需等待对象过期,然后才能提供更新版本。
您还可以通过调用失效API随时从所有Amazon CloudFront边缘位置删除文件的副本。无论您在源服务器上为该文件设置的有效期如何,此功能都会从每个Amazon CloudFront边缘位置删除该文件。如果需要一次删除多个文件,可以在XML文档中发送文件列表(最多1,000个)。失效功能旨在用于意外情况,例如,纠正您上传的视频的编码错误或对您网站的CSS文件的意外更新。但是,如果您事先知道文件会经常更改,则建议您使用对象版本控制来管理文件更新。此技术使您可以更好地控制更改何时生效,还可以避免使对象失效的潜在费用。