内容分发网络 CDN

缓存配置问题

最近更新时间:2024-08-22 11:35:43

我的收藏

什么是节点缓存过期配置?

节点缓存过期配置是指配置 CDN 加速节点在缓存您的业务内容时遵循的一套过期规则。 CDN 节点上缓存的用户资源都面临“过期”问题。若资源处于未过期状态,当用户请求到达节点后,节点会将此资源直接返回给用户,提升获取速度;当资源处于过期状态(即超过了设置的有效时间),此时用户请求会由节点发送至源站,若源站内容已更新,则重新获取内容并缓存至节点,同时返回给用户,若源站内容未更新,则仅更新资源在节点的缓存时间。合理地配置缓存时间,能够有效的提升命中率,降低回源率,节省您的带宽。

如何控制文件在浏览器的缓存时间?

控制台已支持配置浏览器缓存过期时间,详情请见 浏览器缓存过期配置

CDN 如何设置部分文件缓存,部分文件不缓存直接回源?

您可以按照目录、文件路径、文件类型设置对应的缓存时间。详情请参见 节点缓存配置。 当缓存选项为不缓存时,CDN 节点不缓存该资源,用户每次发送访问请求至 CDN 节点时,CDN 节点都会直接回源站拉取相应文件。例如,需要设置 php;jsp;asp;aspx 动态文件不缓存,html 文件缓存1天,其余文件缓存30天。则按照优先级规则底部优先级大于顶部,则节点缓存过期配置如下图:



CDN支持哪些缓存过期配置?

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: Cache Refresh Hit
X-Cache-Lookup: Cache Hit



源站变更文件后,CDN 加速节点上的缓存会主动、实时更新的吗?

CDN 加速节点上的缓存内容不会主动、实时更新。
CDN 节点根据您在控制台配置的 节点缓存过期配置 规则更新缓存;若源站变更文件,但 CDN 缓存未达到过期时间,不会主动回源更新文件,此时将造成源站文件和 CDN 缓存的文件不一致。
若源站资源更新后,需要立刻更新 CDN 节点的缓存,可使用 缓存刷新 功能主动更新 CDN 节点未过期的缓存,使 CDN 节点缓存与源站资源保持一致。
若您需要定时更新某个文件的缓存,可以通过 定时刷新预热 按时触发刷新任务。

CDN 内是否支持 vary 特性

腾讯云 CDN 已支持 vary 特性,当前 vary 功能正在灰度内测中,如果当前用户的源站针对同一 URL,源站响应有 vary 头部,例如:Vary: Accept-Charset,CDN 节点将根据 Accept-Charset 头部进行区分缓存,客户端再请求文件时,CDN 节点将根据不同的 Accept-Charset 头部响应对应的文件。
腾讯云 CDN 默认已经支持不同压缩文件的多版本缓存,所以 vary 头部功能不支持 Accept-Encoding。当源站返回的 Vary 头部的值只有 Accept-Encoding 时,CDN 节点会忽略此头部。