WordPress站点如何加速打开 开启Gzip压缩加快传输方法

目录
文章目录隐藏
  1. Nginx 开启 Gzip 的方法
  2. Apache 开启 Gzip 的方法
  3. PHP 开启 Gzip 的方法
  4. WordPress 开启 Gzip 的方法
  5. htaccess 开启 Gzip 压缩
  6. WordPress 插件开启 Gzip 的方法
  7. index 开启 Gzip 的方法
  8. Gzip 使用注意及说明
  9. Gzip 测试方法
  10. 警告

在二十一世纪,我们大部分的流量来自于现代浏览器,坦白的讲,我们大部分的用户都是很懂技术的。我们不想让任何一个人在访问我们网站的时候卡顿,哪怕是他在用 IE4.0 和 Wdinows95.谷歌和雅虎都开启了 gzip 压缩。一个现代的浏览器要想不仅要享受到现代网络信息还要享受到现代互联网的速度,就必须开启 gzip 压缩。

但是我呢最近都没有使用 Gzip 压缩,是因为发现开启这个压缩也是有学问的。服务器上设置、WordPress 站点上设置还是插件上设置让我有所疑惑。通过几天的研究学习,总结并分享下如何将 WordPress 站点开启 Gzip 压缩以达到加快传输的目的。

为什么我们要开启 gzip 压缩?

在此之前,我有必要解释一下什么编码。当你在互联网上想请求一个文件时,比如 https://mybj123.com/3286.html,你的浏览器会和服务器有一个会话,大概如下如所示。

为什么我们要开启 gzip 压缩

  1. 浏览器:嘿,给我来一个 3286.html 文件
  2. 服务器:好的,让我去找找它是不是在~
  3. 服务器:找到它了,我会返回一个成功的状态码(200 ok),我正在发送文件……
  4. 浏览器:100kb?我滴天……等啊……等啊,好的,下载下来了

当然,实际的请求头和协议会更加正规一点。

但是,它生效了,我拿到了 3286.html 文件。

那现在问题在哪呢?

好吧,这系统是正常的,但是太低效了,坦白讲 100kb 是一大段的文字,HTML 是冗余的,每一个,

都有一个几乎相同的闭合标签。虽然通篇文字都有重复,但是只要你砍掉任何的内容,html(以及它的一奶同胞 xml)都不会正常显示。

当文件太大的时候有什么好办法呢,就是 gzip 压缩它。

如果我们传输一个替代原始大文件的 zip 的压缩文件给浏览器,就会节省带宽和下载时间。当浏览器可以下载 zip 文件,解压,并且渲染给用户。下载很快,页面加载也很快,用户心情就会 very good。这个浏览器–服务器的会话大概是酱紫的:

WordPress 站点如何加速打开 开启 Gzip 压缩加快传输

  1. 浏览器:嘿,给我来一个 index.html,如果要有,给我来一个压缩版的可以吗
  2. 服务器:容我找找……好,满足你,如果找到了给你压缩以下,gzip 格式的哦
  3. 服务器:yep,找到了,正在压缩,马上传给你。
  4. 浏览器:太棒了,只有 10kb,我来解压,并且渲染给用户。

情况很简单:文件越小,下载更快,用户感受更好。

变化的部分在于浏览器和服务器,它成功的发送过去一个压缩文件。对于 gzip 压缩的要点有两点:

  • 浏览器发送一个请求头,告诉服务器接受压缩版本的文件(gzip 和 deflate 是两种压缩算法)Accept-Encoding:gzip,deflate
  • 如果文件压缩了,服务器返回一个头信息:Content-Encoding:gzip

如果服务器没有返回 Content-Encoding 的头信息,意味着这文件是没压缩的(浏览器可以直接解析的)。请求头 Accept-Encoding 只是浏览器的一个请求,而不是命令。如果服务器不返回压缩文件,浏览器就不得不处理那庞大的源文件。

如何设置 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]\.";

简单解释下,别问我为什么只解释 Nginx,因为我就用这个!

第 1 行:开启 Gzip(这是我唯一不借助翻译就能看得懂的)
第 2 行:不压缩临界值,大于 1K 的才压缩,一般不用改
第 3 行:buffer,就是,嗯,算了不解释了,不用改
第 4 行:用了反向代理的话,末端通信是 HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是 HTTP/1.1
第 5 行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧,缙哥哥用的是 6.
第 6 行:进行压缩的文件类型,缺啥补啥就行了,JavaScript 有两种写法,最好都写上吧,总有人抱怨 js 文件没有压缩,其实多写一种格式就行了。不过你要考虑自己的 CDN 之类的,如果静态文件已经丢出去了,也就没必要了!
第 7 行:跟 Squid 等缓存服务有关,on 的话会在 Header 里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧
第 8 行:IE6 对 Gzip 不怎么友好,不给它 Gzip 了

值得一提的是,如果你是使用宝塔面板,那么它已经默认给你开启了 Gzip 压缩功能,如下图所示:

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 压缩加快传输
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 插件,那就更简单了,直接在插件设置主页勾选

WP Performance 插件

Gzippy 插件

如果你使用的是 Gzippy 插件,启动插件即可。

index 开启 Gzip 的方法

通过修改 WordPress 根目录 index.php 文件开启 Gzip 压缩,这是我认为最愚蠢的办法!

为什么呢?众所周知,WordPress 的更新换代好比换内裤,三天两头更新。更新一次你就得改一次,你说是不是最愚蠢的办法?但是,如果上方的你都不行的时候,倒是不妨使用这个方法试试!

进入 WordPress 网站根目录,修改 index.php 文件,找到

define(’WP_USE_THEMES’, true);

在后面加上:

//WordPress 站点加速之开启 Gzip 压缩加快传输
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 文件以及 WordPress hook 的方法。

Gzip 测试方法

以下代码可通过运行 cdm 测试。

整个页面测试代码

curl -I -H "Accept-Encoding: gzip, deflate" "http://www.你的网址.com/"

css 通过 Gzip 压缩测试代码

curl -I -H "Accept-Encoding: gzip, deflate" "http://www.你的网址.com/wp-content/plugins/wpjam-basic/static/script.js"

图片通过 Gzip 压缩测试代码

curl -I -H "Accept-Encoding: gzip, deflate" "https://www.你的网址.org/wp-content/uploads/2019/06/wordpresszmm.jpg"

小于 1K 文件 Gzip 压缩测试代码

curl -I -H "Accept-Encoding: gzip, deflate" "https://www.你的网址.org/wp-content/plugins/wpjam-basic/static/morris.css"

警告

gzip 压缩的出现如此的令人振奋,但是还有以下三个注意点:

-低版本浏览器:一些浏览器接受压缩文件还是有问题(他们说他们可以但是他们并不行),如果你的站点必须在 window95 的网景 1.0 浏览器上,你可能不想要压缩文件。Apache mod_deflate 设置了一些忽略规则来专门为旧浏览器。

-已经压缩过的文件:大多数的图片,音乐和视频都已经压缩过了,不要浪费时间来压缩他们了。事实上,你可以只压缩那三巨头(HTML,CSS AND JAVARSCRIPT)。

-CPU 负载:在传输过程中压缩文件耗费 CPU 但是节省带宽(用空间换时间)。通常压缩速率的选择需要权衡利弊。也存在一些预压缩静态文件的方法,但这要求更多的资源。考虑了 cpu 的耗费,压缩文件也是利大于弊。通过压缩实现更好的用户体验,更短的留白时间,值!

开启 gzip 压缩是优化网站最快的方法之一。大胆的用吧,让你的用户体验更棒。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » WordPress站点如何加速打开 开启Gzip压缩加快传输方法

发表回复