我有一个问题:假设在每个http请求中都有一个cache-control: max-age=0
标头,因此每个请求都将一直发送到原始Web服务器。
如果所有请求都是这样的话,这是否意味着CDN不再有用?
答案 0 :(得分:1)
来自其他帖子: 由用户代理发送时
我相信shahkalpesh的答案适用于用户代理方。您还可以查看13.2.6消除多个响应的消歧。
如果用户代理使用Cache-Control发送请求:max-age = 0(也就是“端到端重新验证”),那么沿途的每个缓存都将重新验证其缓存条目(例如,使用If -Not-Modified标头)一直到原始服务器。如果回复是304(未修改),则可以使用缓存的实体。
另一方面,使用Cache-Control发送请求:no-cache(也称为“端到端重新加载”)不会重新验证,并且服务器在响应时不得使用缓存副本。
这是有道理的并且符合我的结果。 当chrome中的缓存未过期时,它会向CDN发送请求,CDN将使用if-modified-since查询此内容,然后提供给最终用户。
答案 1 :(得分:0)
通过将max-age设置为0,您可以立即有效地使您的页面在CDN边缘缓存中到期。因此,您的CDN总是按照您的建议命中您的原点并使CDN无效。
从您的其他问题中注意到您使用的是Akamai。如果是这样,那么如果您无法直接控制该值,则可以使用Edge-Control
标头覆盖cache-control
,但仍希望能够利用CDN功能。