什么是 GZIP 压缩?
GZIP 是一种广泛使用的文件压缩格式,也是 HTTP 协议支持的一种压缩方式。当服务器启用 GZIP 压缩后,它会在将文本类文件(如 HTML、CSS、JavaScript)发送给浏览器之前进行压缩,从而显著减少传输数据量,加快页面加载速度,提升用户体验和 SEO 表现。
启用 GZIP 压缩的五种方法
注意: 以下方法通常只需选择一种启用,同时启用多种方式可能导致冲突。
方法一:修改根目录 index.php 文件
此方法通过修改 WordPress 核心文件实现,但每次 WordPress 升级后修改会被覆盖,需重新操作。
- 使用 FTP/SFTP 或文件管理器,访问网站根目录(通常包含
wp-config.php的目录)。 - 找到并编辑
index.php文件。 - 在代码
define('WP_USE_THEMES', true);下方添加:ob_start('ob_gzhandler');
前提条件: 服务器 PHP 环境必须已启用 Zlib 扩展(支持 ob_gzhandler 函数)。
方法二:配置 .htaccess 文件(Apache/LiteSpeed 服务器)
这是 Apache 类服务器上最推荐的方法,通过服务器配置文件实现,效率高且不影响核心文件。
在 WordPress 根目录的 .htaccess 文件(位于 # BEGIN WordPress 规则之前)中添加以下代码:
<IfModule mod_deflate.c>
# 启用压缩过滤器
SetOutputFilter DEFLATE
# 设置不压缩特定文件类型(如图片、PDF等已经是压缩格式)
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|pdf|flv|swf|zip)$ no-gzip dont-vary
# 针对特定 MIME 类型启用压缩
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json application/xml application/rss+xml
</IfModule>
<IfModule mod_expires.c>
# 启用缓存控制(非GZIP必需,但常配合使用)
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
注意: 修改前请备份原文件。如果服务器使用 Nginx,此方法不适用。
方法三:通过 php.ini 配置(需服务器支持)
如果您的服务器允许通过 .htaccess 或 user.ini 覆盖 PHP 配置,可以尝试此方法。
在网站根目录的 php.ini(或 .user.ini)文件中添加:
zlib.output_compression = On
zlib.output_compression_level = 5
zlib.output_compression_level 的取值范围是 1-9,1 压缩比最低但最快,9 压缩比最高但最耗 CPU,通常建议设置为 5 或 6 以取得平衡。
方法四:使用 WordPress 插件
对于不熟悉代码的用户,使用插件是最安全便捷的方法。
- 推荐插件: WP Rocket、W3 Total Cache、Perfmatters、LiteSpeed Cache(如果服务器是 LiteSpeed)。这些缓存插件通常都包含 GZIP 压缩功能,且配置简单。
- 传统专用插件: GZIP Compression、Enable GZIP Compression 等。但请注意,许多此类插件已多年未更新,建议优先选择活跃维护的缓存插件。
安装并启用插件后,通常在“设置”或“性能”选项中勾选启用 GZIP 压缩即可。
方法五:在主题的 functions.php 文件中添加代码
此方法将功能代码添加到当前主题中,切换主题会失效。代码更健壮,会先检测服务器环境是否已启用压缩。
打开当前使用主题的 functions.php 文件,在末尾的 ?> 之前(如果存在)添加以下代码:
// 启用 GZIP 压缩
function enable_gzip_compression() {
// 如果已经通过其他方式启用了压缩,则跳过
if ( ini_get('zlib.output_compression') || ini_get('output_handler') == 'ob_gzhandler' ) {
return;
}
// 检查 Zlib 扩展是否加载,并尝试启用输出缓冲压缩
if ( extension_loaded('zlib') && !ob_start('ob_gzhandler') ) {
ob_start();
}
}
add_action('init', 'enable_gzip_compression');
重要提示: 修改主题文件前,请务必创建子主题,并在子主题的 functions.php 中进行修改,以防止主题更新丢失更改。
如何验证 GZIP 压缩是否生效?
配置完成后,可以使用以下在线工具进行检测:
在工具的检测报告中,查看“压缩”或“Enable compression”项目,确认文本资源(如 HTML、CSS、JS)的响应头中是否包含 Content-Encoding: gzip。
总结与推荐
- 最佳实践(Apache/LiteSpeed): 优先使用方法二(配置
.htaccess),这是服务器层面的高效解决方案。 - 最佳实践(Nginx): 需要在 Nginx 配置文件中(如
nginx.conf或站点配置文件)添加 GZIP 相关指令,通常由服务器管理员或托管服务商配置。 - 新手用户: 推荐使用方法四,选择一个可靠的缓存插件(如 WP Rocket 或 LiteSpeed Cache)来一键启用,同时获得其他性能优化功能。
- 开发者/高级用户: 可根据服务器环境选择方法二或方法五(使用子主题)。
启用 GZIP 压缩是 WordPress 网站性能优化的基础且关键的一步,能有效减少带宽使用并提升页面加载速度。
学习了,用到的时候少