案例背景:
cdn侧的目录刷新分为如下两种:
选择 “刷新变更资源” 模式,当用户访问匹配目录下资源时,会回源获取资源的 Last-Modify 信息,若与当前缓存资源一致,则直接返回已缓存资源,若不一致,回源拉取资源并重新缓存;
选择 “刷新全部资源” 时,当用户访问匹配目录下资源时,直接回源拉取新资源返回给用户,并重新缓存新资源。
问题描述:
目录刷新变更资源之后存在某个资源与源站资源不一致。
原因分析:
如果选择的刷新方式如果为“刷新变更资源”,cdn侧会回源获取资源的 Last-Modify 信息,这里cdn侧会拿到源站该文件的Last-Modify和节点缓存资源Last-Modify进行对比,如果源站该文件的Last-Modify反而比节点上缓存的资源Last-Modify更旧,这里cdn节点是不会抛弃节点本身缓存的。所以可能存在提交“刷新变更资源”的时候,发现节点上缓存的是源站之前的资源(Last-Modify更新的)。建议针对于这种场景下直接使用url刷新或者刷新全部资源。
示例:
可以看到节点211.152.146.73上在09:30的时候缓存为Last-Modify 是11月30号资源
在09:10的时候曾提交过目录刷新
可以看到源站上资源Last-Modify为9月24号
解决方案:
针对这种源站的Last-Modify反而比节点上缓存的资源Last-Modify更旧的情况,推荐使用url刷新或者目录刷新全部资源。