如何同时启用公共缓存并禁用私有缓存?CloudFront缓存配置问题
实现方案
完全可以实现,核心是通过Cache-Control的差异化指令区分共享缓存和私有缓存的生效规则:
调整后的响应头配置
将原有的Cache-Control头替换为以下内容即可:
cache-control: public, s-maxage=31556952, max-age=0, must-revalidate
各参数作用说明
public:保留原有公共缓存可存储响应的配置,保证CloudFront等共享缓存可以正常缓存内容s-maxage=31556952:该指令仅对CloudFront、代理这类共享缓存生效,优先级高于普通max-age,共享缓存会按照该值将内容缓存1年,和你之前的预期缓存逻辑完全一致max-age=0:告诉浏览器等私有缓存,响应的本地缓存立刻过期,不会直接使用本地缓存副本must-revalidate:强制浏览器过期后必须向服务端校验资源有效性,完全禁用本地私有缓存的静默使用
CloudFront侧适配要求
CloudFront原生支持s-maxage指令,不需要额外调整CloudFront的缓存策略配置,只要源站返回上述响应头即可生效。如果有更高的安全要求,希望浏览器完全不存储任何响应副本,可以在响应头中额外添加no-store参数。
内容的提问来源于stack exchange,提问作者Hairi
相关产品推荐
相关产品推荐

