CDN 缓存问题
一句话:网站更新了内容,但用户看到的还是旧版本,通常是CDN节点缓存了旧内容没有及时刷新。
它是什么
CDN(内容分发网络)为了加速访问,会把网站内容缓存到全球各地的节点上。这带来速度提升的同时,也意味着你更新了源站内容后,CDN节点可能还在提供之前缓存的旧版本,需要主动清除缓存(刷新/预热)才能让所有用户看到最新内容。
适合干什么
- 网站更新后发现部分用户看到旧内容
- 静态资源(图片、CSS、JS)更新后没有生效
不适合干什么
- 网站根本没有接入CDN的情况(这种直接查源站问题即可,不涉及CDN缓存)
普通人怎么用
去CDN服务商的控制台找到"刷新缓存/清除缓存"功能,手动刷新对应的URL或目录;如果是频繁更新的内容,考虑给资源文件名加版本号/哈希值,这样每次更新文件名都变,天然绕开缓存问题。
进阶用户怎么用
合理设置不同资源的缓存时间(Cache-Control):不常变的资源(如带哈希的JS/CSS文件)可以设置长缓存,频繁变化的内容(如API接口、动态页面)应该设置短缓存或不缓存。
常见误区
- 以为清除浏览器缓存就能解决问题,实际上是CDN节点在缓存,和用户本地浏览器缓存是两回事
- 所有资源都设置成不缓存,虽然能避免这个问题,但会失去CDN加速的意义,影响网站访问速度
和相似工具的区别
- 和浏览器缓存的区别:浏览器缓存只影响单个用户,CDN缓存影响所有从该CDN节点访问的用户,排查和清除的位置也不同
入门步骤
- 确认问题是CDN缓存导致(部分用户看到新内容部分看到旧内容是典型特征)
- 去CDN控制台清除对应内容的缓存
- 考虑给经常更新的资源加版本号避免未来重复出现