如何排除Amazon Cloudfront中的URL?

时间:2015-12-21 20:59:35

标签: url amazon cdn amazon-cloudfront

我计划使用Amazon Cloudfront CDN,我需要排除一个网址。它是一个动态URL(包含查询字符串)。

例如,我想在我的网站上存储/缓存每个页面,除了:

http://www.mypage.com/do-not-cache/?query1=true&query2=5

编辑 - 这是“对象”无效吗?如果是,请提供一个例子。

由于

1 个答案:

答案 0 :(得分:6)

冒着帮助您解决错误问题的风险,我应该指出,如果您将CloudFront配置为将查询字符串转发到源服务器,那么响应将针对整个URI进行缓存 - 即,针对路径+ query-string - 不反对路径,所以......

/dynamic-page?r=1
/dynamic-page?r=2
/dynamic-page?r=2&foo=bar

...将是三个不同的"页面"就CloudFront而言。它永远不会从缓存中提供请求,除非查询字符串相同

  

如果将CloudFront配置为将查询字符串转发到您的源,则CloudFront将在缓存对象时包含URL的查询字符串部分。 [...]

     

即使您的来源始终返回相同的[内容]而不考虑查询字符串,也是如此。

     

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html

因此,显然并故意避免在此页面上进行缓存并不是必需的。如果CloudFront配置为转发查询字符串,则应该是自动的正确行为。

此外,当然,如果您的源服务器在响应标头中设置了Cache-Control: private, no-cache, no-store或类似内容,则CloudFront和浏览器都不应该缓存响应。

但是,如果您非常坚持要求CloudFront明确配置为不缓存此页面,请创建一个新的缓存行为,path pattern匹配/do-not-cache*,并将CloudFront配置为{{3 },它禁用与该路径模式匹配的页面请求的缓存。