http请求中的`cache-control: max-age=0`

`cache-control: max-age=0` in http request

我有一个问题:假设在每个 http 请求中都有一个 cache-control: max-age=0 header,那么每个请求都会一路到达源 Web 服务器。 如果所有的请求都是这样,是不是意味着CDN就没有用了?

通过将 max-age 设置为 0,您可以立即有效地使 CDN 边缘缓存中的页面过期。因此,您的 CDN 总是命中您的来源,并按照您的建议使 CDN 无用。

从您的其他问题中注意到您正在使用 Akamai。如果是这样,那么您可以使用 Edge-Control header 来覆盖您的 cache-control 如果您无法直接控制该值,但仍希望能够利用 CDN 功能。

来自其他 post: 由用户代理发送时

我相信 shahkalpesh 的回答适用于用户代理端。您还可以查看 13.2.6 消歧多重响应。

如果用户代理发送带有 Cache-Control 的请求:max-age=0(又名 "end-to-end revalidation"),那么沿途的每个缓存都将重新验证其缓存条目(例如。使用 If-Not-Modified header) 一直到源服务器。如果回复为 304(未修改),则可以使用缓存的实体。

另一方面,发送带有 Cache-Control 的请求:no-cache(又名 "end-to-end reload")不会重新生效,并且服务器在响应时不得使用缓存副本。

有道理,符合我的结果。 当缓存在chrome没有过期时,它会向CDN发送请求,CDN会用if-modified-since和origin查询这个,然后服务于最终用户。