nginx开启gzip压缩加快网站访问速度

      有很多站长都喜欢把服务器放在国外,这个博客的服务器就位于美国。把站放在国外的好处有很多,例如不需要走国内那套复杂的备案程序,这个就不多说了,水表在门外,呵呵!而且国外很多vps主机的性价比是相当高的,例如本站所用的BudgetVM,512M内存、50GSSD硬盘、每月3TB流量、OPENVZ虚拟化的配置年付只有25刀,按照当前汇率换算成软妹币,每个月大概只需要15元。而在国内的各种云是绝对达不到这个性价比的。

      然而说到国内的访问速度,美国的主机就有些呵呵了,以BudgetVM为例,前两天调整线路,造成我的博客打开十分缓慢,用调试模式一看,卧槽,加载那区区几个js和css都需要5-8秒的时间,等加载完了网页开始渲染,黄瓜菜都凉了!不过对于网站来说,我们可以开启gzip功能,让服务器在传输前先对资源进行压缩,以减少传输时间,提升网页加载速度。

      首先登录你的vps,用你习惯的文本编辑器打开/etc/nginx/nginx.conf,找到官方注释掉的那一行

      把前面的#号去掉,gzip功能就打开了。

      接着我们需要定制gzip的参数,这些参数gzip需要指定的参数如下,直接写在gzip on的原位置下面就行

下面对这些配置进行解释

第一行:这个不说了,gzip的开关。

第二行:指定gzip不压缩的临界值,例如本例中设置为1k,那么对于小于1KB的文件,gzip不会执行压缩操作。

第三行:gzip的缓存大小,一般网站可以照抄,不用改。

第四行:识别http的协议版本。由于早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,但现在99.99%的主流浏览器都支持gzip解压了,所以不用设这个值,请直接将这一行注释掉!

第五行:gzip的压缩级别,数字越大,压缩出来的文件越小,当然对你的服务器资源消耗就会越大。由于恶劣的网络环境,本站服务器把这个值设置成5,一般网站设置2-4就可以了。

第六行:指定需要压缩的文件类型,这里不能直接写文件扩展名,需要写文件在header中的类型需要写文件在nginx里面定义的mime type,怎么找呢?用winscp登录到服务器,把/etc/nginx/mime.types这个文件下载下来,用notepad++打开参考下就行了。下面贴出我的mime.types供参考,左边是需要写在gzip配置文件里面的文件类型,右边是文件的扩展名。

其中text/html这个文件类型是不需要指定的,nginx默认就会压缩它,如果你指定了,在nginx检查配置文件的时候会给你报个错。

一般根据网站的实际情况,把css、js、php、jpg、png、bmp、gif等常见的格式压缩一下就好了。

第七行:给http头里面加个vary字段,用于检测客户端浏览器是否支持压缩,没有特殊需求保持on就行了。

第八行:由于IE浏览器1-6跟gzip功能有兼容性问题,所以对于IE1-6不启用gzip加密。然而对于本站来说,由于屏蔽了过时的SSL算法,ie6和以下的浏览器是根本打不开网站的,所以这句写不写问题不大。

      配置完成之后,首先执行nginx -t检查下配置文件的语法,确认没报错之后执行service nginx reload

      最后,启动chrome或者firefox,按F12打开调试模式,点击network选项卡,注意把顶上的disable cache勾上,然后尝试打开你的网站。

gzip-f12

      在加载的资源列表中,点击一个你刚刚指定的文件类型,例如js文件,查看Response Header,如果看到content-encoding:gzip字样,说明gzip启动成功。如果没有看到,检查下是不是这个文件太小,没有达到gzip压缩的临界值。如果完全没看到gzip,那么检查你配置文件是不是写对了。特别是js文件都没有成功开启gzip的,由于javascript文件的类型有多种写法,请一定参考的自己的mime.types文件,不要照抄网上的!

      最后,如果你的网络条件不是属于烂得不要不要的那种类型,你应该可以明显感觉到网站加载速度的提升!

参考资料
http://shitouququ.blog.51cto.com/24569/1161880
https://www.insp.top/article/open-nginx-gzip-module

发表评论

电子邮件地址不会被公开。 必填项已用*标注