在我们接入 CDN加速 服务后,可能会出现用户访问网站或者APP时,显示的内容不正确、下载的文件不正确、播放的视频不正确的情况,本文将通过排查思路和排查步骤来定位问题。
排查思路
是否缓存规则设置有误
是否本地缓存的问题
资源更新后节点未刷新
是否多个源站文件不一致
是否访问资源被劫持
排查步骤
①检查 域名 缓存规则配置
可能是缓存规则配置不正确,基本的缓存过期时间设置建议如下:
对于动态文件(如php、jsp、asp等),请设置成0秒,即不缓存,每次请求都回源获取。
对于不经常更新的静态文件(如.jpg、.zip等),建议将缓存过期时间设置成1个月以上。
对于频繁更新的静态文件(如js、css等),请根据实际业务情况设定。
可能是缓存优先级设置不正确,导致缓存设置未生效。优先级取值范围为1-100,数值越大优先级越高。
示例:您需要设置一条.jpg文件,缓存过期时间为2天的规则,设置如下:
图中两条缓存规则:所有文件缓存过期时间为30天,优先级为8,.jpg文件缓存过期时间2天,优先级为2。当用户请求访问某.jpg文件时,由于所有文件这条优先级较高,会自动匹配,文件在CDN节点的缓存时间为30天而不是您期望的缓存2天。
更多缓存设置请参考如何设置缓存过期时间。
②确认是否是本地缓存问题
请清除浏览器缓存后再测试,确认是否是浏览器缓存的问题。
③源站更新资源而CDN节点未刷新
如果您的源站内容更新,没有在CDN执行刷新操作,CDN节点缓存的旧内容还未过期,此时用户请求依然会返回旧资源。您可以通过以下两种方式进行手动刷新。
登录华为云控制台,在服务列表中选择“CDN”,左侧菜单栏选择“预热刷新”,在缓存刷新页签完成刷新操作。
通过CDN服务所提供的缓存刷新、缓存预热API接口,主动调用CDN API接口来更新CDN缓存,详见API参考。
说明:如果只更新某个文件,建议使用URL刷新对更新的文件进行刷新。目录刷新会针对目录下所有文件进行刷新,生效时间比较慢。
④排查是否是多个源站文件不一致导致
源站使用了 负载均衡 设备,后端存在多个服务器且它们存放的文件不一致。
CDN添加了备源站,主源站和备源站的文件不一致。
如果是以上两种情况导致,请您将源站侧资源统一,以免用户获得错误文件。
⑤检查资源访问是否被劫持
请排查您的资源访问是否被劫持,如果资源被劫持,请您通过配置HTTPS等方式提高您的安全防护等级。常见的判断劫持的方法如下:
访问网站后响应302,但是location地址不是源站期望跳转的地址。可以通过在客户端浏览器Chrome上输入需要访问的URL,按F12,选择“Network”>“headers”>“Response Headers”>“location”查看。
访问网站后,页面显示的内容不是您的业务内容。