不同节点缓存内容不一致
问题现象
域名接入华为云CDN加速后,发现不同地区的用户访问同一个资源的URL,CDN节点返回的资源不一致。
可能的原因
- 原因一:您在CDN控制台开启了忽略URL参数,同时源站设置了根据URL参数不同返回不同的资源。
当您的源站设置了根据不同URL参数返回不同资源,而CDN侧开启了忽略URL参数,CDN就会忽略参数进行缓存资源,这样就导致不同的节点可能由于首次请求时带的参数不同而缓存不同的资源。当下一次同一个请求访问到不同的节点,收到的返回数据也会不同。
- 原因二:源站资源更新后没有执行缓存刷新操作。
如果您的源站更新了某个资源,而这个资源的访问URL没有变化,终端用户访问该资源时如果节点有缓存,就会直接命中缓存。如果您在更新资源后没有执行缓存刷新操作,只有当节点已缓存的资源过期后才会回源请求最新的资源并重新缓存到节点。同时,由于各个地区访问热度不同,淘汰时间不同,有的节点缓存已经淘汰,用户再次访问时,会回源站请求新的资源,有的节点缓存还在,用户访问时直接返回给用户,从而这导致各个节点的缓存可能出现新老版本同时存在,不同节点缓存内容不一致的情况。
解决办法
- 不同时使用CDN的URL参数功能和源站根据不同URL参数返回不同资源功能。
首先确认您的源站是否设置了根据URL参数返回不同资源,如果设置了,请执行以下操作:
- 登录华为云控制台,选择“所有服务 > CDN与智能边缘 > 内容分发网络 CDN”,进入CDN管理控制台。
- 单击左侧“域名管理”,进入域名管理页面。
- 单击对应的域名,选择“缓存配置”页签,查看是否开启了忽略URL参数。
- 如果您的资源开启了忽略URL参数,请关闭即可。
- 资源更新后刷新对应的URL缓存。