2013-07-20 23 views
1

我想围绕云端和CDN如何工作。 如果我有一个文件,并且缓存控制标头设置为1年,并且我使用亚马逊云端作为我的CDN。 如果我删除文件会发生什么?由于云端服务器缓存它会继续提供服务吗?它会在全球所有地区提供服务,还是仅在请求一次后才会将其缓存到边缘服务器上。如果在云端后面可以访问被删除的文件

例子我有1年

我从一个位置访问该文件在纽约

我再删除文件设置缓存控制头后面亚马逊云锋 blue.jpg的文件。

如果我然后再次访问包含来自纽约的文件的页面,该文件将作为其缓存吗?

如果有人用俄罗斯莫斯科的文件访问该页面,该怎么办?他能够查看该文件吗?

感谢您的帮助:)

回答

1

CloudFront的仅仅是靠近你的用户缓存的集合。每个边缘位置独立运行。

默认情况下,CloudFront服从您的http缓存控制标头。如果您设置标题,以便文件不会过期一年,则CloudFront将继续为该文件提供一年服务,而不会检查回到您的源服务器。

由于每个边缘位置独立运行,在您的示例中,纽约将继续提供该文件,但莫斯科会将该文件删除(404)。正如你可以成像,这可能会导致不同的用户看到不同的内容。

有策略可以避免这个问题。

从CloudFront的文档(http://aws.amazon.com/cloudfront/#details):

对象版本控制和缓存失效 你有两个选择更新在亚马逊的CloudFront的边缘位置缓存文件。您可以使用对象版本控制来管理对内容的更改。要实现对象版本控制,您需要在源服务器中为每个版本的文件创建一个唯一的文件名,并在网页或应用程序中使用与正确版本相对应的文件名。通过这种技术,Amazon CloudFront可以缓存所需对象的版本,而无需等待对象过期,然后才能提供新版本。

您也可以随时通过调用无效API从所有Amazon CloudFront边缘位置删除文件的副本。无论您在源服务器上为该文件设置的过期期限,此功能都会从每个Amazon CloudFront边缘位置删除该文件。如果您需要一次删除多个文件,则可以在XML文档中发送一个文件列表(最多1,000个)。失效功能旨在用于意外情况下,例如,更正您上传的视频的编码错误或更改您网站CSS文件的意外更新。但是,如果您事先知道您的文件将经常更改,建议您使用对象版本控制来更新文件。这种技术使您可以更好地控制更改何时生效,还可以避免使对象失效的潜在费用。

相关问题