什么是节点缓存过期配置?
节点缓存过期配置是指配置 CDN 加速节点在缓存您的业务内容时遵循的一套过期规则。
CDN 节点上缓存的用户资源都面临“过期”问题。若资源处于未过期状态,当用户请求到达节点后,节点会将此资源直接返回给用户,提升获取速度;当资源处于过期状态(即超过了设置的有效时间),此时用户请求会由节点发送至源站,若源站内容已更新,则重新获取内容并缓存至节点,同时返回给用户,若源站内容未更新,则仅更新资源在节点的缓存时间。合理地配置缓存时间,能够有效的提升命中率,降低回源率,节省您的带宽。
如何控制文件在浏览器的缓存时间?
CDN 如何设置部分文件缓存,部分文件不缓存直接回源?
您可以按照目录、文件路径、文件类型设置对应的缓存时间。详情请参见 节点缓存配置。
当缓存选项为不缓存时,CDN 节点不缓存该资源,用户每次发送访问请求至 CDN 节点时,CDN 节点都会直接回源站拉取相应文件。例如,需要设置 php;jsp;asp;aspx 动态文件不缓存,html 文件缓存1天,其余文件缓存30天。则按照优先级规则底部优先级大于顶部,则节点缓存过期配置如下图:
CDN支持哪些缓存过期配置?
CDN 默认的缓存配置是什么?
接入加速域名时,根据不同的业务类型,CDN 会添加默认的节点缓存过期规则,您可按需调整:
CDN - 网页小文件/下载大文件/音视频点播 & ECDN - 动静加速:常规的动态文件(如 php;jsp;asp;aspx)不缓存,其他文件默认缓存30天。
ECDN - 动态加速:全部文件不缓存。
若您未配置任何规则或请求未命中配置的规则时,默认遵循以下平台策略:
当用户请求您某一业务资源时,若源站对应的 HTTP Response Header 中存在 Cache-Control 字段,则遵循该 Cache-Control 。
若源站对应的 HTTP Response Header 中无 Cache-Control 字段,则:CDN 节点默认对该资源缓存600s。
缓存的匹配方式是什么?
当设置了多条缓存策略时,相互之间会有重复,配置项列表底部优先级高于顶部优先级。假设某域名配置了如下缓存配置:
所有文件30天.php .jsp .aspx 0秒.jpg .png .gif 300秒/test/*.jpg 400秒/test/abc.jpg 200秒
假设域名为
www.test.com
,资源为 www.test.com/test/abc.jpg
,其匹配方式如下:1. 匹配第一条所有文件,命中,此时缓存时间为30天。
2. 匹配第二条,未命中。
3. 匹配第三条,命中,此时缓存时间为300秒。
4. 匹配第四条,命中,此时缓存时间为400秒。
5. 匹配第五条,命中,此时缓存时间为200秒。
因此最终缓存时间为200秒,以最后一次匹配生效。
如何判断用户访问是否命中 CDN 节点缓存?
可以根据 HTTP 响应头的 X-Cache-Lookup 的值判断是否命中 CDN 节点缓存,可能同时存在多个 X-Cache-Lookup 头,用于表示不同层级的命中状态。
当 X-Cache-Lookup 有返回以下任意一个值,即代表缓存命中,否则代表缓存未命中。
X-Cache-Lookup: Hit From MemCache
X-Cache-Lookup: Hit From Disktank
X-Cache-Lookup:Hit From Inner Cluster
X-Cache-Lookup: Cache Hit
源站变更文件后,CDN 加速节点上的缓存会主动、实时更新的吗?
CDN 加速节点上的缓存内容不会主动、实时更新。
CDN 节点根据您在控制台配置的 节点缓存过期配置 规则更新缓存;若源站变更文件,但 CDN 缓存未达到过期时间,不会主动回源更新文件,此时将造成源站文件和 CDN 缓存的文件不一致。
若源站资源更新后,需要立刻更新 CDN 节点的缓存,可使用 缓存刷新 功能主动更新 CDN 节点未过期的缓存,使 CDN 节点缓存与源站资源保持一致。
若您需要定时更新某个文件的缓存,可以通过 定时刷新预热 按时触发刷新任务。