帝国 CMS 怎么开启 gzip

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

学完这篇,你能给帝国CMS站点(动态页和生成的静态页)都开启 gzip 压缩,页面传输体积通常能减少 60%~80%,并且知道怎么验证它是不是真的生效了。

先给个结论省得你到处找:帝国CMS后台没有 gzip 开关,翻遍「系统」菜单也没用。压缩这件事由 PHP 或 Web 服务器负责,下面按顺序做就行。

第一步:检测当前有没有开 gzip

这一步是确认现状,做完你能知道自己该不该继续折腾。在电脑终端(Windows 用 CMD 或 PowerShell,Mac 用终端)执行:

curl -s -o /dev/null -D - -H "Accept-Encoding: gzip" https://你的域名/

把输出的响应头找一下,如果看到 Content-Encoding: gzip,说明已经开了,后面不用做;如果一整行都没有,就往下走。

注意:别用 curl -I。它发的是 HEAD 请求,部分服务器对 HEAD 不做压缩,你会误判成「没开」。

第二步:Nginx 开启 gzip(推荐,静态页也管用)

这一步在服务器层面开压缩,做完所有 .html 静态页也会被压缩——帝国CMS 主要靠静态页吃饭,所以这步最关键。

宝塔面板操作路径:登录面板 → 左侧菜单点「网站」→ 找到你的站点,点右侧「设置」→ 弹窗顶部选「配置文件」→ 在 server { } 花括号内粘贴以下内容:

gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/xml image/svg+xml;
gzip_vary on;
gzip_disable "msie6";

点弹窗右下角「保存」,宝塔会自动重载 Nginx。

非宝塔环境:编辑站点配置文件 /www/server/nginx/conf/nginx.conf 或 /etc/nginx/conf.d/站点.conf,粘贴同样内容,然后执行 nginx -t 检查语法,通过后执行 nginx -s reload。

注意:gzip_types 里千万别加 image/jpeg、image/png、video/mp4。这些格式本身已经是压缩过的,再压一遍只会白烧 CPU,体积几乎不变。

第三步:PHP 层开启(管动态页)

这一步管的是帝国CMS的动态页面,比如搜索页、会员中心、动态调用的内容页。Nginx 的 gzip 对 PHP 输出也生效,但如果你跳过了第二步或者只想在 PHP 层解决,就走这里。

宝塔路径:「软件商店」→「已安装」→ 找到你的 PHP 版本(如 PHP-7.4)→ 点「设置」→ 左侧选「配置修改」→ 搜索 zlib.output_compression,把

zlib.output_compression = Off

改成

zlib.output_compression = On
zlib.output_compression_level = 6

点「保存」,然后回上一页点「重启」。

注意:如果第二步已经开了 Nginx gzip,这一步就别开了,二选一即可。重复配置只会让动态页多挨一次压缩,白白消耗 CPU。

第四步:只给帝国CMS单独开,不动全局(可选)

如果你的服务器上跑着好几个站,不想改全局 php.ini,可以只让帝国CMS自己压缩。

用 FTP 或宝塔文件管理器打开 e/class/connect.php,在文件最开头 <?php 的下一行插入:

if(!ob_start('ob_gzhandler')){ ob_start(); }

保存后访问网站首页验证效果。

注意:帝国CMS 升级会覆盖 e/ 目录下的所有程序文件,升级完这句就没了,需要重新加一遍。另外此时必须保证 zlib.output_compression 是 Off 状态,两者同时开,页面会报 ob_gzhandler 错误或者直接输出乱码。

第五步:验证结果

再跑一次第一步那条 curl 命令,看到 Content-Encoding: gzip 就成功了。

用浏览器验证也可以:按 F12 打开开发者工具 → 切到「Network / 网络」标签 → 刷新页面 → 点第一个文档请求 → 看「Response Headers / 响应标头」里有没有 Content-Encoding: gzip。

注意:如果你用了 CDN(Cloudflare、百度云加速等),CDN 节点可能已经帮你压过了,本地再配一遍属于重复劳动,先确认 CDN 后台的 gzip 开关状态。

小结

  • 帝国CMS后台没有 gzip 开关,别找了。
  • 静态页压缩靠 Nginx,动态页压缩靠 Nginx 或 PHP,两者不要同时开。
  • gzip_types 只写文本类类型,图片视频别加。
  • 改 e/class/connect.php 的方案会被升级覆盖,用全局 php.ini 或 Nginx 更稳。
  • 验证认准响应头 Content-Encoding: gzip,别靠感觉。
版权声明:本文来自 GJ站长论坛《帝国 CMS 怎么开启 gzip》
原文链接:https://www.gj0.com/thread-998.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~