首页 其他文章 如何通过gzip和nginx来提高网站打开速度及整体性能【投稿】
如何通过gzip和nginx来提高网站打开速度及整体性能【投稿】
作者 : pjcourse 来源 : pjcourse 浏览 : 16 次 时间 : 2021-03-20 13:56:54
简述
要知道,网站的打开速度取决于浏览器打开下载的网页文件大小。如果传输的页面内容文件减少,那你网站的打开速度一定会加快。特别是手机端的用户,打开网站速度受限于移动端网络,所以压缩网站页面内容显得至关重要。gzip是一种非常流行的数据压缩方式。你可以在nginx配置中开启gzip来压缩网页文件。然后,这些文件又由浏览器解压缩,文件不会受任何。但是压缩文件是会占用服务器资源,所以最好压缩那些效果比较好的文件。比如文本文件压缩效果非常好,通常会缩小两倍多。而JPG或PNG这类文件,本身就已经进行格式压缩,所以再做二次压缩,效果并不是特别明显。本文主要讲一下如何配置nginx来开启gzip压缩。

环境

  • ubuntu 20.04服务器

  • root权限或具有sudo特权的非root用户

一、创建测试文件

在这一步中,我们将在默认的Nginx目录中创建几个测试文件。稍后我们将使用这些文件来检查Nginx的默认行为是否进行gzip压缩,并测试配置更改是否具有预期的效果。

首先,创建几个测试文件,这些文件主要用来查看我们的gzip压缩效果。gzip是不会分析文件内容的,它主要通过文件扩展名来判断文件类型,如果还分析文件内容,那整个效率就会大大降低。所以我们可以创建一些图像文件、html文件和一些样式文件。

sudo truncate -s 1k /var/www/html/test.html
sudo truncate -s 1k /var/www/html/test.jpg
sudo truncate -s 1k /var/www/html/test.css
sudo truncate -s 1k /var/www/html/test.js

下一步是检查Nginx在使用我们刚创建的文件在全新安装中压缩请求的文件时的行为。

二、命令方式查看压缩效果

使用curl命令方式,添加标头Accept-Encoding: gzip,来查看各文件的压缩结果。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.html

可以看到以下结果:

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:04:25 GMT
Content-Type: text/html
Last-Modified: Tue, 09 Feb 2021 19:03:41 GMT
Connection: keep-alive
ETag: W/"6022dc8d-400"
Content-Encoding: gzip

在最后一行,出现Content-Encoding: gzip字样。说明服务器正在用gzip压缩来发送文件。默认情况下,nginx仅压缩html文件。所有在这个命令中可以看到文件做了压缩处理。但其它的文件格式,并未做压缩处理。

可以通过下面这条命令来验证我们刚才的说法。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg

再看一下结果,和之前的有所不同:

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:05:49 GMT
Content-Type: image/jpeg
Content-Length: 1024
Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT
Connection: keep-alive
ETag: "6022dc91-400"
Accept-Ranges: bytes

输出结果中没有出现Content-Encoding: gzip,这意味着该文件并没有做任何的压缩。

你也可以使用这个方法来测试css等样式文件。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.css

结果一样,没有出现Content-Encoding: gzip

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:06:04 GMT
Content-Type: text/css
Content-Length: 1024
Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT
Connection: keep-alive
ETag: "6022dc91-400"
Accept-Ranges: bytes

三、配置Nginx开启gzip功能

本节主要操作相关配置,让gzip可以处理其它几种文件格式的压缩。

你可以使用nano或vim编辑nginx的配置文件

sudo nano /etc/nginx/nginx.conf

找到gzip设置部分,如下所示:

/etc/nginx/nginx.conf

. . .
##
# `gzip` Settings
#
#
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
. . .

因为我们用的是ubuntu 20.04。所以默认情况下,gzip是开启的。但有些设置无效,所以我们需要做一些修改:

  • 通过取消注释行前面的#来启用其他设置(即,删除#符号)

  • 添加gzip_min_length 256;参数,该参数是告诉nginx,不要去压缩小于256字节的文件,因为很小的文件没有太必要。压缩这类文件反而影响服务器效率。

  • gzip_types参数中添加其他文件类型扩展名,这些文件类型可以是Web字体,图片、XML、JSON结构化数据或SVG图片文件。

应用这些更改之后,设置部分应如下所示:

/etc/nginx/nginx.conf

. . .
##
# `gzip` Settings
#
#
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
. . .

保存并关闭文件以退出。要启用新配置,需要重新启动Nginx:

sudo systemctl restart nginx

四、确保所有的配置正确

重复之前的测试步骤,执行相应的命令请求:

curl -H "Accept-Encoding: gzip" -I http://localhost/test.html

因为html文件,之前已经默认开启压缩,所以这个命令执行结果保持不变:

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:04:25 GMT
Content-Type: text/html
Last-Modified: Tue, 09 Feb 2021 19:03:41 GMT
Connection: keep-alive
ETag: W/"6022dc8d-400"
Content-Encoding: gzip

然后我们来测试一下之前未压缩的css样式表,看看结果会有什么变化:

curl -H "Accept-Encoding: gzip" -I http://localhost/test.css

可以看到gzip正在压缩文件:

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:21:54 GMT
Content-Type: text/css
Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"6022dc91-400"
Content-Encoding: gzip

我们可以用相同的方式测试一下jpg文件:

curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg

没有看到gzip压缩:

Output
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Tue, 09 Feb 2021 19:25:40 GMT
Content-Type: image/jpeg
Content-Length: 1024
Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT
Connection: keep-alive
ETag: "6022dc91-400"
Accept-Ranges: bytes

因为在之前的配置中,我们并没有添加 image/jpeg。

在这种情况下,我们已经在Nginx中成功配置了gzip。

结论

可以看出,gzip很容易配置,而且带来的速度提升也非常明显,我在自己的网站www.academicphd.com都添加了这类参数。

image.png

搜索引擎也非常喜欢这类加载方式,如果想提高搜索引擎的排名,增加gzip是非常有必要的。



上一篇: Google Map api国内正常使用该如何配置(2021最新)【投稿】

下一篇: 不懂英文能靠建站卖站达到月入上万?【投稿】
版权声明:原创文章,转载时请注明原始出处,作者等相关信息。
本文连接:https://ntbk8.cn/index/d-133.html
留言
上传图片
评论列表

102 篇

文章总数

41681 次

浏览总数

94 条

评论总数

昵称 Telkobe
职业 PHP开发
家乡 四川南充
住址 暂居成都
QQ 946188985
文章搜索
热门文章
最新文章
新闻头条

1 纪实文学《第一书记》首发式在临沂市陶然居大酒店举行

2 95 后女孩糊墙 6 天赚 4 万,850 万粉丝点赞,央视都请她干活:早该火了

3 蚊香放在沙发上,中山市东升镇一出租屋凌晨起火

4 视频|拆不掉的“鸟巢”

5 视频|漫游费取消四年了 相关套餐为何仍在收费?

6 安置困境儿童10余人 普陀区检察院构建全方位保护体系守护“幼苗”

7 视频|男子地铁站内见网友被拒 奔现3小时后想轻生...

8 视频|家具城半夜清运建筑垃圾 居民:噪音大到睡不着

9 感悟终南——陈团结摄影作品展在“陌上花栖”启幕

10 花4000多元买猫刚一周多就病死 店方:可免费更换但无法退款

11 彻查!应急管理部:报请国务院安委会挂牌督办这一事故

12 新疆“透水”煤矿排水能力大幅提升,透水点封堵工作已启动

13 千灯湖向日葵花海开上央视!全国人民都在羡慕佛山南海人穿短袖

14 舍管员盗窃学生财物 昆明盘龙民警人赃并获

15 华为总裁二女儿5亿城堡曝光,生活奢华至极,网友:学学你大姐

16 无需高考,高二直接上清华,本硕博连读,这些同学怎么做到的?

17 惊险一幕!蓉遵高速上有辆小车发生自燃

18 高速路口 62 万车主违章,罚款过亿?查!

19 迈科集团挖掘新时代文化的魅力-开展跨越国界的文化交流

20 把14个艺术家关进废弃医院一周……能玩得多野?

21 以一敌百!幼儿园种植日 家长自带锄头秒杀全场

22 工业互联网平台覆盖产业链上中下游 这样的数字化让广东的制造业由“强”变“大”

23 视频|三位乘客都有驾驶证,开车的司机却是无证驾驶

24 今年“五一”假期,去这些地儿还能买到打折机票

25 全国肿瘤防治宣传周来临,大咖专家在沪畅谈消化道癌防治

26 兴谷街道:精心组织暖心服务齐到位,疫苗接种我带头!

27 开通绿色通道,山东庄镇多举措推进新冠疫苗接种工作

28 浦口民警快速救助受伤群众

29 新墨书房获评网红人气咖啡厅

30 当代名家(山东枣庄)交流会暨牛郎山采风活动顺利举行

历史上的今天

1 在326年前的今天,1695年4月13日 (农历三月初一),法国诗人让·德·拉封丹逝世。

2 在278年前的今天,1743年4月13日 (农历三月十九),美国第三任总统杰斐逊诞辰。

3 在120年前的今天,1901年4月13日 (农历二月廿五),中国共产党早期革命活动家赵世炎出生。

4 在117年前的今天,1904年4月13日 (农历二月廿八),俄舰队司令在海战中葬生。

5 在102年前的今天,1919年4月13日 (农历三月十三),巴伐利亚苏维埃共和国建立。

6 在102年前的今天,1919年4月13日 (农历三月十三),印度发生阿姆利则惨案 死亡1200人。

7 在82年前的今天,1939年4月13日 (农历二月廿四),黄河大合唱在延安首演。

8 在80年前的今天,1941年4月13日 (农历三月十七),日苏中立条约签订。

9 在77年前的今天,1944年4月13日 (农历三月廿一),苏联收复刻赤半岛。

10 在76年前的今天,1945年4月13日 (农历三月初二),苏联红军收复维也纳。

11 1949年4月13日 (农历三月十六),国共两党就国内和平协定举行谈判。

12 1950年4月13日 (农历二月廿七),新中国第一部法规《婚姻法》诞生。

13 1964年4月13日 (农历三月初二),普瓦捷赢得奥斯卡金奖。

14 1972年4月13日 (农历二月三十),我国恢复在万国邮联的合法权利。

15 1975年4月13日 (农历三月初二),乍得政局动荡。

16 1976年4月13日 (农历三月十四),教育部部长周荣鑫受“四人帮”的诬陷迫害在北京逝世。

17 1978年4月13日 (农历三月初七),文革后第一个外国交响乐团来华演出。

18 1987年4月13日 (农历三月十六),中葡签署《关于澳门问题的联合声明》。

19 1988年4月13日 (农历二月廿七),海南成为中国第31个省。

20 1988年4月13日 (农历二月廿七),“体操王子”李宁宣布退役。

21 1990年4月13日 (农历三月十八),苏联承认波兰卡廷事件是苏联所为。

22 1995年4月13日 (农历三月十四),摄影大师郎静山逝世。

23 1995年4月13日 (农历三月十四),新中国第一架超音速无人驾驶飞机试飞成功。

24 1997年4月13日 (农历三月初七),美国黑人选手创高尔夫球赛最低杆数。

25 1998年4月13日 (农历三月十七),广西失恋女投毒237名学生集体中毒。

26 1998年4月13日 (农历三月十七),中国妇女运动先驱帅孟奇逝世。

27 1998年4月13日 (农历三月十七),国家大剧院设计方案进行国际招标。

28 1998年4月13日 (农历三月十七),泰森经纪人称泰森将重新申请拳击执照。

29 2005年4月13日 (农历三月初五),第59届联合国大会通过《制止核恐怖行为国际公约》。

30 在1346年前的今天,0675年4月13日 (农历三月十三),唐高宗诏令武则天摄国政。

31 在1207年前的今天,0814年4月13日 (农历三月十九),保加利亚大公克鲁姆逝世。

百度统计 站长统计

©2018-2021 www.ntbk8.cn. All rights reserved.  蜀ICP备18006425号

友情链接:  若岚博客  vipbic  卢松松博客  快云vps  Geticsen  聚宝盆  飞之梦工作室  7分钟课堂  提交友链