有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 内容分发网络 CDN > 故障处理 > 不同节点缓存内容不一致

现象描述

对 CDN 同一个资源 URL,不同地域的终端用户访问到 CDN 节点返回的内容不一致。

可能原因

原因一:命中了域名配置的缓存键规则 - 忽略全部参数,同时源站设置了根据参数吐出不同的资源。 由于源站是根据参数不同输出不同数据,而 CDN 是忽略参数进行缓存,这就导致不同的节点可能由于第一次收到的访问带的参数不同建立了不同的缓存。下一次当同一个请求访问到不同节点,收到的缓存返回的数据也是不一样。
原因二:源站同一个资源更新后没有做刷新处理。 CDN 是按 URL 进行资源缓存的。 如果源站更新文件后,URL 没有变化,只是内容发生变化,访问时如果节点有缓存还是会直接命中缓存。 同时,由于各个地域访问热度不一,淘汰时间不一,有的节点缓存已经淘汰,再次访问时,会回源站拉取新的资源,从而这导致各个节点的缓存可能出现新老版本同时存在,不同节点缓存内容不一致的情况。

解决思路

1. 确保源站根据 URL 参数吐出不同的资源和 CDN 域名配置的缓存键规则-忽略全部参数不同时使用。
2. 确保源站同一个 URL 的资源更新以后统一做刷新处理。

处理步骤

1. 根据自身业务情况,判断源站是否根据 URL 参数吐出不同的资源。
是,请执行 步骤2
否,请直接执行 步骤4
2. 登录 CDN 控制台,选择域名管理找到对应的域名配置, 查看缓存配置 > 缓存键规则配置的“忽略参数”项:检查 CDN 配置域名是否开启忽略参数缓存功能。


3. 是,请执行 步骤3
4. 否,请直接执行 步骤4
5. 在缓存键规则配置中对应规则的操作栏,单击修改,在弹出的“修改规则”框关闭忽略参数功能,然后单击保存


说明
如果用户不方便全部关闭,这里 CDN 也提供了保留指定参数的忽略功能, 用户也可以根据实际的业务需求进行选择使用。具体用法可参见 缓存键规则配置
6. 进入刷新预热目录,对源站变更的资源进行刷新


说明
用户也可以采用 API 的方式进行刷新,这样当源站出现变更时,绑定调用 API 进行刷新,可以第一时间保证全网变更资源访问内容的一致性。详细可参见 URL 刷新接口目录刷新接口