如何配置Cache-Control头:绕过设备缓存且允许CDN缓存?
HTTP轮询检测网络状态的缓存控制配置方案
要实现「客户端不使用本地缓存、CDN可缓存文件无需每次回源」的需求,需要配合设置客户端请求头和源服务器响应头:
一、客户端请求头设置
发送GET请求时,携带以下请求头:
Cache-Control: no-cache
或者等价配置:
Cache-Control: max-age=0
这两种配置都会强制客户端跳过本地缓存,直接向CDN发起请求,确保轮询能真实检测当前网络连通性。
二、源服务器响应头设置
源服务器返回/static/byte.txt时,需要返回以下响应头:
Cache-Control: public, s-maxage=86400, must-revalidate
各参数作用:
public:允许CDN等共享缓存节点存储该文件s-maxage=86400:指定CDN的缓存有效期(示例为1天,可根据实际需求调整时长),该参数仅对共享缓存生效,优先级高于通用的max-agemust-revalidate:当CDN缓存过期后,必须回源验证文件是否更新,不能直接返回过期缓存;但在缓存有效期内,CDN可直接返回缓存给客户端,无需回源
额外优化建议
同时给文件配置ETag或Last-Modified响应头,这样CDN收到客户端的验证请求时,可通过If-None-Match或If-Modified-Since头判断缓存是否有效,仅在文件更新时返回完整内容,进一步优化传输效率。
内容的提问来源于stack exchange,提问作者Juliano
相关产品推荐
相关产品推荐

