帝国 CMS 网站访问速度慢

chinaz
chinaz 初级会员超兽战士
发布于 2026-10-08 12:34 ·1 浏览 ·0 回复

学完这篇,你能按“先定位、再缓存、后静态化、最后查数据库”的顺序,把帝国CMS 7.5 网站的 TTFB 从几秒降到几百毫秒,并且知道每一步在后台哪个菜单里操作。

第一步:先量一下慢在哪,别上来就改配置

这一步要确定瓶颈是 PHP、SQL 还是图片,做完你能拿到具体数字,而不是凭感觉优化。浏览器按 F12 打开开发者工具,切到 Network 面板,按 Ctrl+F5 强制刷新首页,看第一条请求的 TTFB(等待服务器响应时间)。如果 TTFB 超过 1 秒,登录服务器执行 top -c,看 MySQL 和 php-fpm 哪个占 CPU 高。再执行 mysql -uroot -p -e "show full processlist;",看有没有卡住很久的 SELECT。装了宝塔面板 8.x 的话,进“数据库 -> 慢查询日志”,打开慢查询开关,阈值设 1 秒。

注意:TTFB 高不等于服务器差,先看是不是某个 [e:loop] 一次查了几万行,改配置之前先定位。

第二步:打开帝国CMS自带缓存,关掉实时统计

这一步要把后台里默认关闭的缓存打开,做完能减少大量重复 SQL。进入后台 /e/admin/,点顶部“系统 -> 系统设置 -> 系统参数设置”(7.5 某些小版本叫“基本参数设置”,找带“统计”“缓存”字样的项),把“统计访问量”“记录访问 IP”“实时更新点击数”全部选“关闭”。再到“系统 -> 系统设置 -> 页面缓存设置”,开启“动态页面缓存”,缓存时间填 3600 秒。接着进“系统 -> 系统设置 -> 数据缓存设置”,把栏目缓存、模板缓存勾上。最后点“系统 -> 数据更新 -> 更新缓存”。

注意:开启页面缓存后,会员中心、购物车这类页面不能缓存,要在“页面缓存设置”里把 /e/member/、/e/pay/ 等目录排除掉,否则用户会看到别人的登录状态。

第三步:能静态就静态,伪静态只做补充

这一步把动态页面变成 HTML,做完文章页由 Nginx 直接返回,不再走 PHP 和 MySQL。在“系统 -> 数据更新 -> 更新所有栏目页”和“更新所有内容页”,先小批量生成。栏目设置里把“生成方式”改成“静态页”。如果不想全静态,进“系统 -> 系统设置 -> 伪静态参数设置”,选“Nginx 伪静态”,把规则复制到 Nginx 配置的 location / { rewrite ... } 里,执行 nginx -t 测试后 systemctl reload nginx。

注意:静态化后改模板必须重新生成,否则页面还是旧样式;几万篇内容一次性生成会卡死,建议按栏目分批,每批 500 篇。

第四步:改模板里的 e:loop,别让它查全表

这一步减少单页 SQL 数量,做完一个列表页可能从几十条查询降到几条。进“模板 -> 模板管理”,找到首页模板和列表模板,把 [e:loop={...}] 加上 limit='0,10',去掉嵌套循环。能用 [e:loop] 的地方不要用 [e:sql] 手写 SQL。如果必须写 SQL,把 select * 改成具体字段,避免 order by rand()。

注意:order by rand() 和 select * 在大表上极慢,几十万条数据时一条就能拖垮页面。

第五步:数据库和 PHP 层收尾

这一步给表加索引、开 OPcache,做完查询和 PHP 执行都更快。进“系统 -> 数据表管理”,找到 phome_ecms_news、phome_ecms_news_data_1 等表,给 checked、classid、newstime 字段加普通索引;执行 OPTIMIZE TABLE phome_ecms_news; 清理碎片。PHP 7.4/8.0 的 php.ini 里设 opcache.enable=1、opcache.memory_consumption=128,重启 php-fpm。Nginx 开 gzip 和 expires,静态资源缓存 7 天。

注意:加索引前先备份数据库,别在访问高峰期执行 ALTER TABLE,大表会锁写。

小结

  • 先用 F12 的 TTFB 和 MySQL 慢查询定位,再动手改。
  • 帝国CMS 7.5 后台“系统 -> 系统设置”里开页面缓存、数据缓存,关实时统计。
  • 能生成静态页就生成,伪静态作为补充,记得排除会员目录。
  • 模板里给 [e:loop] 加 limit,避免 select * 和 order by rand()。
  • 数据库加索引、PHP 开 OPcache、Nginx 开 gzip,三层一起收尾。
版权声明:本文来自 GJ站长论坛《帝国 CMS 网站访问速度慢》
原文链接:https://www.gj0.com/thread-952.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~