Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Amazon Cloudfront中排除URL?_Url_Amazon_Cdn_Amazon Cloudfront - Fatal编程技术网

如何在Amazon Cloudfront中排除URL?

如何在Amazon Cloudfront中排除URL?,url,amazon,cdn,amazon-cloudfront,Url,Amazon,Cdn,Amazon Cloudfront,我计划使用Amazon Cloudfront CDN,我需要排除一个URL。这是一个动态URL(包含查询字符串) 例如,我希望存储/缓存网站上的每个页面,但以下页面除外: http://www.mypage.com/do-not-cache/?query1=true&query2=5 编辑-这就是使“对象”无效的作用吗?如果是,请提供一个例子 感谢冒着帮助您解决错误问题的风险,我应该指出,如果您将CloudFront配置为将查询字符串转发到源服务器,那么响应将针对整个URI进行缓存—即

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

例如,我希望存储/缓存网站上的每个页面,但以下页面除外:

http://www.mypage.com/do-not-cache/?query1=true&query2=5
编辑-这就是使“对象”无效的作用吗?如果是,请提供一个例子


感谢

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

/dynamic-page?r=1
/dynamic-page?r=2
/dynamic-page?r=2&foo=bar
…就CloudFront而言,将是三个不同的“页面”。除非查询字符串完全相同,否则它永远不会提供来自缓存的请求

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

即使您的来源始终返回相同的[content],不管查询字符串是什么,这也是正确的

因此,实际上没有必要显式地故意避免在这个页面上进行缓存。如果CloudFront配置为转发查询字符串,则正确的行为应该是自动的

此外,当然,如果您的源服务器在响应头中设置了
缓存控制:private、no Cache、no store
或类似设置,则CloudFront和浏览器都不应缓存响应


但是,如果您非常坚持要显式地将CloudFront配置为不缓存此页面,请使用匹配的
/do not cache*
,创建一个新的缓存行为,并将CloudFront配置为,这将禁用对匹配该路径模式的页面请求的缓存。

另外,回答您的问题,关于“使对象无效”--否。使对象无效(通俗地说,“清除缓存”或“清除缓存”)是一种一次性操作,可“立即”(实际上,在启动无效请求后的几分钟内)从所有边缘位置缓存中删除与您指定的路径模式相匹配的任何对象。例如,如果您的源服务器无意中返回了错误的内容并对其进行了cloudfront缓存,那么这将非常有用。后续请求将导致再次缓存响应;无效不会产生永久性影响。感谢您的澄清。这是有道理的。我选择显式地从缓存中排除特定路径。