针对浏览器和CDN的不同缓存控制


Different Cache-Control for browser and CDN

是否可以为CDN和浏览器设置不同的缓存控制头?目前,我正在使用

header("Cache-Control: max-age=3600, public");

由于我使用的是public,我相信浏览器和CDN都在缓存页面1小时。我在CDN上设置了原始拉取,以便CDN服务器从web主机检索页面。

我希望客户端缓存10分钟,CDN缓存1小时。这可能吗?

如果这不可能,我根本不希望浏览器缓存内容,而是希望CDN每小时缓存一次。

这是可能的,但取决于特定的CDN。通常,CDN将以相同的方式解释缓存控制标头。CDN具有用于缓存控制的专有机制。例如,Akamai将读取优先于标准缓存标头的专有HTTP标头(X-Akamai-something)。

浏览器和CDN可以有不同的缓存控制设置。因此有两种类型的缓存控制设置:

1) 。浏览器到边缘服务器的缓存控制设置:这通常在Origin服务器上完成,CDN通常尊重该设置
2) 。边缘服务器到原始缓存控制设置:这通常在CDN层完成。此外,还可以在CDN层添加配置,以覆盖Origin服务器的缓存控制设置,如1)所示。

总之,浏览器和CDN可以有不同的缓存控制设置,也可以选择不在浏览器缓存,只在CDN层缓存。