CMS程序定时清理缓存,自动释放服务器内存

网站运行久了,CMS程序缓存文件越积越多,服务器内存被慢慢吃满,轻则后台卡顿,重则数据库连接失败。
解决这个问题最省心的办法,就是让系统定时清理缓存并自动释放内存,不需要每天手动登录操作。
下面按零基础也能照做的步骤,分别给出宝塔面板和纯命令行两种方案。

先搞清楚你的CMS缓存放在哪

不同CMS的缓存目录不一样,清理前必须确认路径,否则可能误删网站数据。

  • WordPress:缓存通常在 wp-content/cache/,如果装了缓存插件,路径可能在该插件目录下,例如 wp-content/plugins/wp-rocket/cache/
  • 帝国CMS:缓存目录一般是 e/data/ 下的临时文件和 d/file/ 里的缩略图缓存,建议在后台“系统设置”里查看具体路径。
  • 织梦DedeCMS:常见位置是 data/cache/data/tplcache/
  • 其他CMS:在程序根目录搜索 cache 文件夹,或者查看程序官方文档确认。

判断缓存是否该清理的信号:服务器内存占用持续超过80%,CMS后台操作变慢,df -h 查看磁盘空间没有明显变化但网站加载时间变长。

方案一:宝塔面板设置定时任务

适合不熟悉命令行的用户,全程鼠标操作。

  1. 登录宝塔面板,左侧菜单点击 计划任务
  2. 点击 添加任务,任务类型选择 Shell脚本
  3. 任务名称填写 清理CMS缓存并释放内存
  4. 执行周期根据网站流量选择:中小型站点建议 每天凌晨3点 执行一次;访问量大的站点可以设为 每6小时 一次。
  5. 脚本内容按下面填写,注意把 /www/wwwroot/你的网站目录 替换成实际路径:
#!/bin/bash
# 清理WordPress缓存示例
rm -rf /www/wwwroot/你的网站目录/wp-content/cache/*
# 清理系统缓存并释放内存
sync && echo 3 > /proc/sys/vm/drop_caches
  1. 点击 保存,然后点击该任务右侧的 执行 按钮测试一次。

注意echo 3 > /proc/sys/vm/drop_caches 需要root权限,宝塔计划任务默认以root运行,通常可以直接执行。
如果提示权限不足,在脚本开头加上 sudo 或确认面板是以root身份登录。

方案二:Linux命令行配置crontab

如果你用的是纯命令行服务器,或者想更精细地控制,直接用crontab。

先创建清理脚本:

vim /root/clean_cms_cache.sh

写入以下内容:

#!/bin/bash
# CMS缓存目录,根据实际情况修改
CACHE_DIR="/www/wwwroot/your_site/wp-content/cache"
# 删除缓存文件,保留目录本身
find $CACHE_DIR -type f -delete
# 释放被占用的内存缓存
sync && echo 3 > /proc/sys/vm/drop_caches
# 记录执行时间,便于排查
echo "Cache cleaned at $(date)" >> /var/log/cms_cache_clean.log

赋予执行权限:

chmod +x /root/clean_cms_cache.sh

然后编辑crontab:

crontab -e

添加一行,表示每天凌晨3点执行:

0 3 * * * /root/clean_cms_cache.sh

保存退出后,可以用 crontab -l 确认任务已添加。

结论:无论用宝塔还是crontab,核心都是“找到缓存目录 → 写清理脚本 → 设置定时执行”,区别只是操作界面不同。

避坑指南:这几点不注意会出问题

  • 不要直接删除缓存目录本身:用 rm -rf 目录/* 而不是 rm -rf 目录,否则CMS可能因为找不到缓存目录而报错。
  • 清理前确认没有正在进行的写入操作:如果网站正在被访问,突然清空缓存可能导致个别用户请求变慢,建议在低峰期执行。
  • drop_caches 不要频繁使用:这个命令会清空系统文件缓存,频繁执行反而增加磁盘IO。每天一次足够,内存特别小的机器可以改为每12小时一次。
  • 测试脚本时先手动跑一遍bash /root/clean_cms_cache.sh,看有没有报错,确认缓存文件确实被清理了。
  • 日志要保留:脚本里加了日志输出,方便你回头检查任务到底有没有执行成功。

怎么验证清理和内存释放真的生效了

执行完任务后,用下面几个命令确认效果:

查看内存变化:

free -h

对比执行前后的 available 列,如果之前内存紧张,执行后可用内存应该明显增加。

查看缓存目录是否已清空:

ls -lh /www/wwwroot/your_site/wp-content/cache/

如果目录下没有大量文件,说明清理成功。

查看日志确认任务执行记录:

tail -20 /var/log/cms_cache_clean.log

判断标准:如果日志里有新的时间记录,且 free -h 显示可用内存上升,说明定时清理缓存并自动释放服务器内存的流程已经跑通。

常见疑问

问:清理缓存后网站第一次访问变慢正常吗?
正常。缓存被清空后,CMS需要重新生成页面缓存,第一次访问会稍慢,之后恢复正常。如果长时间不恢复,检查缓存目录权限是否正确。

问:drop_caches 会不会影响正在运行的服务?
这个命令只释放文件系统缓存,不会杀掉进程或丢失数据。但建议在业务低峰执行,避免短暂IO升高影响体验。

问:我的CMS没有独立缓存目录怎么办?
有些CMS把缓存写进数据库或内存组件(如Redis)。这种情况下,定时清理应改为重启Redis或执行CMS自带的清理命令,具体参考程序官方文档。

问:定时任务没有执行,怎么排查?
先检查crontab服务是否运行:systemctl status crond。再确认脚本路径是绝对路径,且脚本有执行权限。宝塔用户可以在计划任务日志里看执行记录。

按上面步骤配置完成后,建议观察两三天内存曲线,再根据实际情况调整执行频率。
如果服务器内存本身较小,除了定时清理,也可以考虑优化CMS的缓存策略,减少缓存生成量。

分享到:
上一篇
无头CMS GraphQL接口调用,前端获取内容
下一篇
CMS后台日志清理,减少数据库占用空间
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意