3

AWS Cloudfront 文档说:

如果您将特定源的 TTL 设置为 0,CloudFront 仍将缓存来自该源的内容。然后,它将发出带有 If-Modified-Since 标头的 GET 请求,从而使源有机会发出信号,表明 CloudFront 可以继续使用缓存的内容(如果它在源处没有更改)

我需要配置我的动态内容。我已经将 TTL 设置为 0 .. 我希望每个请求总是去 Origin。有没有办法避免这个带有 If-Modified-Since 标头的额外 GET 请求!为什么每次都有这个额外的要求!

4

2 回答 2

4

有没有办法避免这个额外的GET请求

听起来好像您误解了您正在阅读的内容。不幸的是,您没有引用来源,因此很难返回并获取更多上下文;但是,这并不是指“额外”请求。

然后它将GET使用 If-Modified-Since 标头发出请求

这是指每次浏览器随后请求对象时。CloudFront 发送下一个请求,If-Modified-Since:以便您的源服务器可以选择返回304 Not Modified响应......它不会向源发送两个请求以响应来自浏览器的一个请求。

如果您的内容始终是动态的,请返回Cache-Control: private, no-cache, no-store并将最小 TTL 设置为 0。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

于 2016-10-11T18:43:22.680 回答
2

这是我从 AWS 得到的答案:

但是,如果您转发该特定源的所有标头,则请求将每次都转到源,而没有提到 If-Modified-Since 标头 [1]。请查看以下链接的摘录以获取更多详细信息:

“将所有标头转发到您的源 重要如果您将 CloudFront 配置为将所有标头转发到您的源,CloudFront 不会缓存与此缓存行为关联的对象。相反,它将每个请求发送到源。”</p>

于 2016-10-17T02:25:22.360 回答