如何排查不同CDN节点缓存不一致问题

问题描述

域名接入CDN加速后,发现不同地区的用户访问同一个资源的URL,CDN节点返回的资源不一致。

问题分析

原因一

在 CDN 控制台开启了 URL 参数,同时源站设置了根据URL 参数不同返回不同的资源。当您的源站设置了根据不同 URL 参数返回不同资源,而 CDN 侧开启了 URL 参数,CDN 就会忽略参数进行缓存资源,这样就导致不同的节点可能由于首次请求时带的参数不同而缓存不同的资源。当下一次同一个请求访问到不同的节点,收到的返回数据也会不同。

原因二

源站资源更新后没有执行缓存刷新操作。如果您的源站更新了某个资源,而这个资源的访问URL没有变化,终端用户访问该资源时如果节点有缓存,就会直接命中缓存。如果您在更新资源后没有执行缓存刷新操作,只有当节点已缓存的资源过期后才会回源请求最新的资源并重新缓存到节点。同时,由于各个地区访问热度不同,淘汰时间不同,有的节点缓存已经淘汰,用户再次访问时,会回源站请求新的资源,有的节点缓存还在,用户访问时直接返回给用户,从而这导致各个节点的缓存可能出现新老版本同时存在,不同节点缓存内容不一致的情况。

解决方案
  1. 不同时使用CDN的URL参数功能和源站根据不同URL参数返回不同资源功能。首先确认您的源站是否设置了根据URL参数返回不同资源,如果设置了,请执行以下操作:

    • 登录 CDN控制台
    • 单击左侧“域名管理”,进入域名管理页面。
    • 单击对应的域名,选择“缓存配置”,查看是否开启了去问号参数缓存。 如果您的域名如上图所示开启了URL参数,关闭即可 alt
  2. 资源更新后刷新对应的URL缓存。当您更新了源站资源后,请同步刷新对应的URL,详细步骤如下:

    • 登录 CDN控制台
    • 单击左侧“预热刷新”,选择“缓存刷新”页签,输入对应的URL或者目录进行刷新。 alt

    如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论