最近都没有使用Gzip压缩,是因为发现开启这个压缩也是有学问的。服务器上设置、WordPress站点上设置还是插件上设置让我有所疑惑。通过几天的研究学习,总结并分享下如何将WordPress站点开启Gzip压缩以达到加快传输的目的。
Nginx开启Gzip的方法
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 16k;
- gzip_http_version 1.1;
- gzip_comp_level 6;
- gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
- gzip_vary on;
- gzip_proxied expired no-cache no-store private auth;
- gzip_disable "MSIE [1-6]\.";
值得一提的是,如果你是使用宝塔面板,那么它已经默认给你开启了Gzip压缩功能,如下图所示:
Apache开启Gzip的方法
首先确保你的Apache已经加载了mod_deflate
模块,然后在httpd.conf
代码中加载以下代码:
- <IfModule mod_deflate.c>
- AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json application/x-httpd-php application/x-javascript
- </IfModule>
如果你没有权限修改你的主机,你也可以将以上代码复制到网站根目录的.htaccess文件中。
PHP开启Gzip的方法
如果修改Apache的httpd.conf
文件无效,则可以通过修改PHP的php.ini
方法:
打开PHP目录下的php.ini
文件,找到zlib.output_compression = Off
,改成zlib.output_compression = On
,再把;zlib.output_compression_level
前面的;
去掉,后面的-1
改成1-9
的值,1的压缩比率最低,建议取5。这样便可以实现所有PHP页面的Gzip效果。
如果无法修改php.ini
文件,则可以在需要Gzip压缩的PHP文件头部加入:
- if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
- ob_start('ob_gzhandler');
- }else{
- ob_start();
- }
就可以实现该PHP页面Gzip压缩。
WordPress开启Gzip的方法
如果上述方法都无效,则将下面的代码复制到当前主题的functions.php文件中也可以实现WordPress整站Gzip压缩:
- //WordPress站点加速之开启Gzip压缩加快传输 - https://www.wangxiaoyou.com/1155.html
- add_action('init', 'wpjam_gzip_compression');
- function wpjam_gzip_compression(){
- if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
- ob_start('ob_gzhandler');
- }else{
- ob_start();
- }
- }
.htaccess开启Gzip压缩
编辑站点根目录.htaccess文件,在最后面加上一下三种代码中的任意一种。
代码一
- php_value output_handler ob_gzhandler
代码二
- <IfModule mod_expires.c>
- ExpiresActive On
- ExpiresByType image/gif A2592000
- ExpiresByType image/jpeg A2592000
- ExpiresByType image/png A2592000
- ExpiresByType image/x-icon A2592000
- ExpiresByType application/x-javascript A604800
- ExpiresByType text/css A604800
- </IfModule>
- <IfModule mod_deflate.c>
- SetOutputFilter DEFLATE
- AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
- </IfModule>
代码三
- php_flag zlib.output_compression On
- php_value zlib.output_compression_level 6
WordPress插件开启Gzip的方法
这里就有很多可以开启Gzip的插件了,我就随意举几个亲自尝试的例子,具体适用与否需要自己尝试。
WP Super Cache插件
如果你的WordPress已安装WP Super Cache缓存插件,可以在WP Super Cache设置→高级选项中勾选Compress pages so they’re served more quickly to visitors.(Recommended)一项,这样也可以开启Gzip压缩,想必很多人都见过,我就不截图了!
WP Performance插件
如果你使用的是WP Performance插件,那就更简单了,直接在插件设置主页勾选。
Gzippy插件
如果你使用的是Gzippy插件,直接启动插件即可。
index开启Gzip的方法
通过修改WordPress根目录index.php文件开启Gzip压缩,这是我认为最愚蠢的办法!
为什么呢?众所周知,WordPress的更新换代好比换内裤,三天两头更新。更新一次你就得改一次,你说是不是最愚蠢的办法?但是,如果上方的你都不行的时候,倒是不妨使用这个方法试试!
进入WordPress网站根目录,修改index.php文件,找到:
- define(’WP_USE_THEMES’, true);
在后面加上:
- //WordPress站点加速之开启Gzip压缩加快传输 - https://www.wangxiaoyou.com/1155.html
- ob_start(‘ob_gzhandler’)
我在上面加个地址,以免你忘了这句话什么意思。别忘了升级WordPress之后重新加回去!
Gzip使用注意及说明
如果在.htaccess文件中禁止了Gzip功能的话,那在php.ini文件中开启后也需在.htaccess文件中开启 Gzip,否则没有效果。
开启WordPress的Gzip功能后,服务器将在页面传输前将页面压缩后传送,可以有效减少服务器的带宽使用,也可以加速页面下载。
另外请注意只能选择一种方式来开启WordPress的Gzip压缩,否则有可能造成冲突,请谨记。
经过测试,采用服务器压缩要比使用PHP压缩要更快,而且压缩之后更小。所以最好的方法还是直接让Apache直接进行Gzip压缩。如果无法修改Apache的httpd.conf文件,再尝试去修改php.ini文件,最终才是使用修改PHP文件以及hook的方法。
Gzip测试方法
以下代码可通过运行cdm测试。
整个页面测试代码
- curl -I -H "Accept-Encoding: gzip, deflate" "https://www.wangxiaoyou.com"
CSS通过Gzip压缩测试代码
- curl -I -H "Accept-Encoding: gzip, deflate" "https://www.wangxiaoyou.com/wp-content/plugins/wpjam-basic/static/style.css"
JS通过Gzip压缩测试代码
- curl -I -H "Accept-Encoding: gzip, deflate" "https://www.wangxiaoyou.com/wp-content/plugins/wpjam-basic/static/script.JS"
图片通过Gzip压缩测试代码
- curl -I -H "Accept-Encoding: gzip, deflate" "https://www.wangxiaoyou.com/wp-content/uploads/2019/01/wordpresszmm.jpg"
小于1K文件Gzip压缩测试代码
- curl -I -H "Accept-Encoding: gzip, deflate" "https://www.wangxiaoyou.com/wp-content/plugins/wpjam-basic/static/morris.css"
- 我的微信
- 微信扫一扫
-
- 我的微博
- 微博扫一扫
-
评论