【问题标题】:How can I exclude URLs within Amazon Cloudfront?如何在 Amazon Cloudfront 中排除 URL?
【发布时间】:2016-03-28 00:45:45
【问题描述】:

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

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

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

编辑-这是使“对象”无效的原因吗?如果有,请举个例子。

谢谢

【问题讨论】:

    标签: url amazon cdn amazon-cloudfront


    【解决方案1】:

    冒着帮助您解决错误问题的风险,我应该指出,如果您将 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 配置为 forward all of the request headers to the origin,这会禁用页面缓存请求匹配该路径模式。

    【讨论】:

    • 另外,回答你的问题,关于“使对象无效”——不。使对象无效(通俗地说,“清除缓存”或“破坏缓存”)是一次性操作,它会“立即”从所有边缘位置缓存中删除与您指定的路径模式匹配的任何对象(实际上,在一段时间内)从您发起无效请求开始的几分钟内)。例如,如果您的源服务器无意中返回了错误的内容并在云端缓存了它,这很有用。后续请求会导致响应再次被缓存;失效不会产生永久影响。
    • 感谢您的澄清。这就说得通了。我选择从缓存中明确排除特定路径。
    猜你喜欢
    • 2019-08-16
    • 2016-07-20
    • 2014-10-06
    • 2011-02-04
    • 2014-08-12
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多