问题描述
使用CDN服务下载文件后,出现文件内容不一致的情况。
问题原因
使用CDN服务访问资源时,在缓存没有过期之前,系统会直接反馈给用户CDN节点上的缓存,在这期间如果源站进行了同名更新操作,则在访问时会发现请求到的资源仍然是旧的资源,从而导致网站内容错乱。
同名更新表示修改了文件内容,但没有修改文件名。
解决方案
建议从以下几个方面解决使用CDN服务下载的文件不一致的问题。
源站不进行同名更新操作或增加版本号。
源站进行了同名更新后CDN并不会感知到,因此建议在源站尽量不要进行同名更新。
通过给URL增加版本参数的方式使CDN请求新资源的时候会回源取数据。
说明这种方式在CDN的控制台上不能开启过滤参数功能,否则失效。
用户在进行同名更新后,可通过控制台或API手动刷新对应的资源URL,这样才能保证源站内容与CDN的缓存内容保持一致。刷新方式可以分为目录刷新和URL刷新,如何配置刷新请参见配置CDN后文件如何更新。其中URL刷新主要适合单个资源,刷新速度较快;而目录刷新则会刷新该目录下的所有文件、刷新速度较慢,由于该目录下所有资源的下次请求都会回源,因此可能会对源站带宽负载产生影响。
URL刷新:强制将CDN CACHE节点上的某些文件设置为已过期,以达到重新回源更新的目的,生效时间大约在5至10分钟之内,同一个ID每天最多只能刷新2000个URL。
说明输入的URL必须带有
http://
。目录刷新:强制将CDN CACHE节点上某个目录的文件均设置为已过期,以达到重新回源更新的目的,适用于内容较多的场景,一般会在30分钟内生效, 一天最多提交100个刷新请求。
说明注:所输入内容需以
http://
开始,以/
结束。并且一定要在目录刷新页签进行目录刷新操作,否则在URL刷新页签成功后只刷新单URL,并不包括目录下的所有文件。
如果CDN的源站是OSS,在OSS的控制台上开启CDN缓存刷新功能,当OSS源站出现Object同名更新的时候,会调用CDN的刷新接口刷新对应的URL。可通过以下步骤开启CDN缓存自动刷新功能。
登录OSS管理控制台。
单击Bucket列表,然后单击目标Bucket名称。
在左侧导航栏,选择Bucket配置>域名管理。
打开目标域名右侧的CDN缓存自动刷新开关。
适用于
CDN