ZBlogCMS 后台访问慢该怎么优化

juming
juming 初级会员超兽战士
发布于 2026-10-08 03:55 ·1 浏览 ·0 回复

照着这篇文章走一遍,你能定位出 ZBlog 后台慢的真正原因,并把打开后台首页的时间从十几秒压到一两秒以内。

第一步:先确认慢在哪一层,别急着改配置

这一步的目标是搞清楚「慢」发生在服务端还是浏览器端,避免瞎优化。

  1. 用 Chrome 打开 你的域名/zb_system/admin/index.php?act=admin,按 F12 → 切到 Network(网络)面板 → 勾选 Disable cache → 刷新页面。
  2. 点最上面那条 index.php 请求,看右侧 Timing(计时)里的 Waiting for server response(TTFB)。
  • TTFB 超过 1 秒:是 PHP 或数据库的问题,看第二步以后。
  • TTFB 很快但页面整体加载慢:是前端资源(图片、外部 JS)的问题,检查是否引用了墙外的字体、统计脚本。

注意:一定要在无痕窗口测一次。装了浏览器的广告拦截插件,后台部分 AJAX 请求会被拦掉,导致页面一直转圈。

第二步:停用多余插件,用二分法排查

这一步的目标是找出拖慢后台的插件,结果通常最明显。

进后台左侧菜单「应用中心」→「插件管理」,把插件按「停用」按钮逐个关掉,每关一个就刷新一次后台首页,看秒数有没有掉下来。

重点怀疑这几类:

  • 访问统计、IP 归属地类插件(每次打开后台都查一次库)
  • 带「自动更新」「自动推送」字样的插件(后台每次加载都发外部请求)
  • 长期没更新的老插件(ZBlog 1.7 及以上版本兼容性差)

注意:不要一次性全禁用,否则无法判断是哪个插件的锅;也不要在禁用后直接点「卸载」,先停用观察,确认没问题再卸载。

第三步:堵住后台对外网的等待请求

ZBlog 后台首页会向官方应用中心请求更新信息,服务器如果连不上(尤其国内部分机房到境外线路不稳),PHP 会一直等到超时才返回,这是后台卡十几秒的最常见原因。

在服务器上执行:

echo "127.0.0.1 app.zblogcn.com" >> /etc/hosts

Windows 服务器改 C:\Windows\System32\drivers\etc\hosts。改完刷新后台,速度通常会立刻回升。

注意:这会让「应用中心」里的在线主题、插件市场打不开。需要装新插件时,把这一行前面加 # 注释掉,装完再加回来。

第四步:给文章表加索引、清理垃圾数据

这一步的目标是降低数据库查询耗时,文章上千篇后效果很明显。

用 phpMyAdmin 或命令行连上数据库,先看表前缀(默认 zbp_):

-- 加复合索引,覆盖后台文章列表的常用查询
ALTER TABLE zbp_post ADD INDEX idx_cate_status_time (log_CateID, log_Status, log_PostTime);

-- 清理草稿和待审核文章(log_Status:0 公开、1 草稿、2 待审核,先 SELECT 确认再删)
SELECT COUNT(*) FROM zbp_post WHERE log_Status IN (1,2);

-- 清理垃圾评论
DELETE FROM zbp_comment WHERE comm_IsChecking = 1;

-- 回收表空间
OPTIMIZE TABLE zbp_post, zbp_comment;

注意:ALTER TABLE 和 DELETE 前务必先备份数据库(后台「网站设置」→「数据备份」可以导出,或用 mysqldump -u 用户名 -p 库名 > bak.sql)。删数据前一定先跑 SELECT 看条数。

第五步:打开 PHP OPcache 并升到 PHP 8

这一步的目标是让 PHP 不再每次请求都重新编译 ZBlog 的几千个 PHP 文件。

打开 php.ini,确认或添加:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
memory_limit=256M

改完执行 systemctl restart php-fpm(宝塔面板在「软件商店」→ PHP 设置 → 性能调整里也能开)。

注意:ZBlog 官方要求 PHP 7.4 以上,建议直接上 PHP 8.0/8.1,后台数据库操作能快 30% 以上。切换 PHP 版本前先确认主题和插件都兼容。

第六步:调大 MySQL 缓冲池

这一步的目标是让文章数据尽量走内存而不是磁盘。

编辑 my.cnf(宝塔在「数据库」→「性能调整」):

innodb_buffer_pool_size = 512M   # 建议设为服务器内存的 50%~60%
slow_query_log = 1
long_query_time = 1

重启 MySQL 后观察慢查询日志,看还有哪些 SQL 在拖后腿。

第七步:清缓存、检查 CDN 是否缓存了后台

进后台首页,点顶部右侧的「清空缓存并重建模板」,清掉 data/cache 目录里的旧缓存。

如果你用了 CDN,去 CDN 控制台把后台目录加入不缓存规则:

/zb_system/*
/admin.php

注意:CDN 缓存后台页面会导致你看到的是几分钟前的旧数据,也常被误判成「后台卡」。后台目录必须完全绕过 CDN。

小结

  • 先用 F12 看 TTFB,区分服务端慢还是前端慢,再动手。
  • 后台卡十几秒,八成是应用中心的外部请求超时,改 hosts 阻断最快。
  • 插件用二分法逐个停用排查,重点怀疑统计类和自动更新类。
  • 文章表加 log_CateID + log_Status + log_PostTime 复合索引,清掉草稿、待审文章和垃圾评论。
  • 开 PHP OPcache、升到 PHP 8、调大 innodb_buffer_pool_size。
  • 清空 ZBlog 缓存,并把后台目录从 CDN 缓存里排除。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 后台访问慢该怎么优化》
原文链接:https://www.gj0.com/thread-727.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~