CDN缓存刷新,CMS更新内容后清理缓存
CMS后台显示文章已更新,
前台访问却还是旧内容,
多数情况下不是CMS没保存,
而是CDN节点上还留着旧缓存。CDN缓存刷新的本质,
是通知各个边缘节点丢弃指定URL或目录的缓存副本,
下次用户访问时回源拉取最新内容。 本文面向零基础站长,
讲清楚在宝塔面板、
CDN控制台和命令行下,
如何正确清理缓存并验证效果。
先确认缓存到底卡在哪一层
动手刷新之前,先判断问题是出在CDN、服务器本地缓存,还是浏览器缓存。
打开浏览器无痕模式访问更新后的页面,如果无痕下是新内容,说明浏览器缓存导致;
如果无痕下还是旧内容,再用 curl -I 查看响应头:
curl -I https://你的域名/更新后的页面
重点看 X-Cache、Age、CF-Cache-Status 这类字段。
显示 HIT 且 Age 数值较大,基本可以确定是CDN缓存未过期。
如果显示 MISS 或 BYPASS,则要检查CMS是否真的写入了数据库,或者服务器上装了Redis、Memcached、OPcache等本地缓存。
在CDN控制台刷新缓存
国内常用CDN(如阿里云CDN、腾讯云CDN、百度云加速)操作路径类似,登录控制台后找到 缓存刷新 或 刷新预热 菜单。
- URL刷新:适合只更新了几篇文章,把完整URL粘贴进去,一行一个。
- 目录刷新:适合栏目页、列表页整体更新,格式如
https://你的域名/tech/。 - 全站刷新:谨慎使用,会瞬间拉高回源带宽,流量大的站点可能触发源站限流。
提交后通常几分钟内生效,控制台会显示刷新任务状态。
如果刷新后仍不生效,检查URL是否带了参数,比如 ?,带参数的URL和纯静态URL在CDN眼里是两个缓存对象。
from=singlemessage
宝塔面板与服务器侧的清理操作
如果CDN刷新后前台还是旧内容,问题可能在源站。
宝塔面板用户按以下顺序排查:
- 进入 网站 → 设置 → 缓存,如果有开启Nginx缓存或Redis缓存,先清空对应缓存。
- 进入 软件商店,找到已安装的Redis或Memcached,点击 重启 或 清空数据。
- 如果用了PHP OPcache,在 软件商店 → PHP设置 → 性能调整 中调整OPcache配置,或直接重启PHP服务。
命令行下可以执行:
# 清空Redis缓存(谨慎操作,会丢失所有缓存数据)
redis-cli FLUSHALL
# 重启PHP-FPM
systemctl restart php-fpm
# 重启Nginx
systemctl restart nginx
注意:FLUSHALL 会清空整个Redis实例,如果Redis里存了会话或队列数据,不要直接执行。 更安全的做法是只删除与页面缓存相关的key前缀。
用命令行工具批量刷新
文章量大、手动在控制台粘贴URL效率低时,可以用CDN厂商提供的API或CLI工具。
以阿里云CDN为例,安装CLI后执行:
aliyun cdn RefreshObjectCaches --ObjectPath "https://你的域名/文章路径" --ObjectType File
腾讯云CDN也有类似的 PurgePathCache 接口。
使用前需要在控制台创建API密钥,并确认账号有CDN刷新权限。API刷新同样有频率限制,短时间内大量提交可能被限流,建议分批操作。
刷新后如何验证是否生效
刷新操作提交后,不要只刷新浏览器。
用以下方式确认:
- 用
curl -I再次查看响应头,X-Cache应变为MISS或EXPIRED,Age归零或很小。 - 在不同网络环境(手机4G、公司网络)访问同一页面,确认内容一致。
- 登录CDN控制台查看刷新任务日志,确认状态为“成功”。
如果多次刷新后仍显示旧内容,检查源站是否配置了 Cache-Control 头,且 max-age 设置过长。
可以在Nginx配置中针对动态页面设置较短缓存时间:
location ~* \.(php|html)$ {
add_header Cache-Control "no-cache, must-revalidate";
}
容易踩坑的几个地方
- 只刷新首页,忘了列表页和文章页:CMS更新后,首页、栏目页、文章页可能各自独立缓存,需要分别刷新或按目录刷新。
- CDN刷新了,但源站Nginx缓存没清:CDN回源时拿到的还是旧内容,等于白刷。
- 浏览器缓存误导判断:测试时务必用无痕模式或强制刷新(Ctrl+F5)。
- 全站刷新过于频繁:可能导致源站带宽跑满,影响正常访问。
常见疑问
Q:CDN缓存刷新和预热有什么区别?
刷新是让旧缓存失效,用户访问时回源拉新;预热是主动把新内容推送到节点,适合大文件或活动页面提前分发。
Q:为什么刷新后部分地区还是旧内容?
不同地区的CDN节点刷新存在时间差,通常几分钟内逐步生效。如果超过半小时仍未同步,联系CDN厂商核查节点状态。
Q:CMS后台有没有自动刷新CDN的插件?
部分CMS(如WordPress)有CDN插件,可以在发布文章时自动调用刷新接口。配置前确认插件支持你使用的CDN服务商,并测试刷新是否成功。
Q:刷新缓存会影响网站访问速度吗?
刷新后首次访问会回源,速度略慢于缓存命中时,但之后会重新缓存。合理设置缓存过期时间,可以减少频繁刷新带来的回源压力。
日常运营中,建议把CDN缓存刷新作为内容更新流程的固定一步:先更新CMS,再刷新对应URL或目录,最后用无痕模式验证。
养成这个习惯后,新内容基本能即时生效。