2

我正在尝试了解云端和 CDN 的工作方式。如果我有一个文件并且缓存控制标头设置为 1 年,并且我使用亚马逊云前端作为我的 CDN。如果我删除文件会怎样?是否仍会因为它被云端服务器缓存而提供服务?它会在世界的所有位置提供服务,还是仅在被请求一次时才缓存在边缘服务器上。

示例我在 Amazon Cloud Front blue.jpg 后面有一个文件,缓存控制标头设置为 1 年

我从纽约的某个地方访问该文件

然后我删除文件。

如果我随后再次从纽约访问包含该文件的页面,该文件是否会作为其缓存服务?

如果有人随后访问带有来自俄罗斯莫斯科的文件的页面怎么办。他可以查看文件吗?

谢谢你的帮助 :)

4

1 回答 1

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 文件的意外更新。但是,如果您事先知道您的文件会经常更改,建议您使用对象版本控制来管理文件的更新。

于 2013-07-23T12:51:10.373 回答