使用CDN服务下载的文件不一致

问题描述

使用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缓存自动刷新功能。

    1. 登录OSS管理控制台

    2. 单击Bucket列表,然后单击目标Bucket名称。

    3. 在左侧导航栏,选择Bucket配置>域名管理

    4. 打开目标域名右侧的CDN缓存自动刷新开关。

适用于

  • CDN