首页 其他文章 如何通过gzip和nginx来提高网站打开速度及整体性能【投稿】
如何通过gzip和nginx来提高网站打开速度及整体性能【投稿】
作者 : pjcourse 来源 : pjcourse 浏览 : 132 次 时间 : 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
留言
上传图片
评论列表

110 篇

文章总数

66178 次

浏览总数

96 条

评论总数

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

1 最深水位及腰,三亚一村庄内涝 被困群众被成功转移

2 最具影响力!海淀融媒又双叒叕上榜啦!

3 厨房煤气泄漏,用打火机测试?这个口诀要记牢

4 济南诚基中心四期迎来改造,曾经无奈的居民“看到希望”

5 杨笠工作室声明:杨笠只是受邀参加某时尚媒体活动,与奔驰无任何商业合作

6 本想在网络找个兼职,结果被骗近八万

7 语文最需要共情,他把课讲到学生心坎上

8 80后女教师扎根乡村10年 逛街看电影成了“奢侈品”

9 上天入地、飞檐走壁……消防“蜘蛛侠”大片来袭!

10 奥运冠军乐靖宜、罗雪娟、焦刘洋沪上同框,她们要复出了?

11 这座县域隶属扬州,处于江苏中部地理位置优越,为何说发展不好?

12 瓦后Wahou属于什么档次?是奢侈品吗?

13 新洲最美教师24年如一日扎根乡村教育,走教一年多来奔波数百公里

14 网红直播喝农药身亡,这些“帮凶”该当何罪?

15 最新!牵动全网人心的这位杭州刑警又有好消息

16 德州一拉面馆搬迁,老板贷款退会员储值金!本人回应:已退15万元,退款还在继续

17 四旬男子不满父亲喊他吃饭,竟持刀将其砍伤,涉故意杀人罪被起诉

18 挥拍魔都, 2021 澳网中国业余挑战赛上海站精彩收官!

19 “液态——2021上海当代艺术展”展出,看艺术家如何诠释“液态”?

20 秀出未来可期的艺术新面貌,2021上海青年艺术博览会下月启幕

21 上海江南民歌大赛颁奖展演在青浦朱家角古镇举行

22 不颁一分钱的“上海好童书”颁出 张文宏主编《病菌简史》获特别奖

23 粤剧《白蛇传·情》昨晚在宛平剧院开演

24 福州一在建摩天轮垮塌

25 中国书坛新人新作展览在新洲面试考核

26 海南省少儿民歌文化季圆满落幕 小小“红心”唱响椰城

27 突发!福州一在建摩天轮疑似意外倒塌

28 老常“还钱”记

29 【践行重要训词精神】十元打底“炸金花”,11人聚众赌博被罚

30 天天315丨这两批次的被子抽检不合格 抵抗外力能力较差易破裂

历史上的今天

1 在113年前的今天,1908年10月19日 (农历九月廿五),日本政府封禁《民报》。

2 在101年前的今天,1920年10月19日 (农历九月初八),苏联英雄约翰·里德英年早逝。

3 在89年前的今天,1932年10月19日 (农历九月二十),右江根据地创建人之一韦拔群被暗害。

4 在86年前的今天,1935年10月19日 (农历九月廿二),中共中央和红一方面军到达陕北。

5 在85年前的今天,1936年10月19日 (农历九月初五),鲁迅在上海病逝。

6 在84年前的今天,1937年10月19日 (农历九月十六),英国物理学家卢瑟福逝世。

7 在78年前的今天,1943年10月19日 (农历九月廿一),《解放日报》发表《在延安文艺座谈会上的讲话》。

8 1949年10月19日 (农历八月廿八),中央人民政府组成。

9 1950年10月19日 (农历九月初九),抗美援朝,志愿军跨过鸭绿江赴朝鲜前线。

10 1956年10月19日 (农历九月十六),波兰政治家哥穆尔卡复出。

11 1965年10月19日 (农历九月廿五),中国尼泊尔正式直接通邮。

12 1978年10月19日 (农历九月十八),卡尔波夫击败克切诺依蝉联世界象棋冠军。

13 1986年10月19日 (农历九月十六),莫桑比克总统座机坠毁 萨莫拉不幸身亡。

14 1987年10月19日 (农历八月廿七),黑色星期一世界股市狂跌。

15 1989年10月19日 (农历九月二十),苏联最新式的航空母舰下水。

16 1995年10月19日 (农历闰八月廿五),北约秘书长克拉斯辞职。

17 1995年10月19日 (农历闰八月廿五),卢泰愚丑闻震惊韩国。

18 1996年10月19日 (农历九月初八),我国第一艘热气飞艇首飞成功。

19 1998年10月19日 (农历八月廿九),格鲁吉亚军人哗变。

20 1998年10月19日 (农历八月廿九),人类首次徒步穿越世界最大峡谷。

21 1998年10月19日 (农历八月廿九),微软公司迎战美国政府。

22 2001年10月19日 (农历九月初三),著名指挥家李德伦逝世。

23 2001年10月19日 (农历九月初三),江泽民与布什首次会晤。

24 2007年10月19日 (农历九月初九),欧盟通过《里斯本条约》 制宪危机有所化解。

25 2007年10月19日 (农历九月初九),全球气候变化举世关注 “巴厘岛路线图”艰难出台。

26 2007年10月19日 (农历九月初九),东盟签署《东盟宪章》 一体化进程加速推进。

27 2007年10月19日 (农历九月初九),多种因素交互作用 国际油价持续高位震荡。

28 2007年10月19日 (农历九月初九),中东和会在美举行 巴以和平进程艰难重启。

29 2010年10月19日 (农历九月十二),“国际制造创新节”首设“蔡伦奖”。

百度统计 站长统计

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

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