摘要:結(jié)果應(yīng)該與以前略有不同響應(yīng)頭沒有輸出,這意味著文件是在沒有壓縮的情況下提供。文件的響應(yīng)頭下一步是將配置支持其他類型文件的壓縮。下一步是檢查配置的更改是否按預(yù)期工作?,F(xiàn)在,只有圖像文件才能保持未壓縮狀態(tài)。
歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~
本文由小鐵匠米蘭的v 發(fā)表于云+社區(qū)專欄簡(jiǎn)介
網(wǎng)站加載的速度取決于瀏覽器必須下載的所有文件的大小。減少要傳輸?shù)奈募拇笮】梢允咕W(wǎng)站不僅加載更快,而且對(duì)于那些寬帶是按量計(jì)費(fèi)的人來說也更友好。
gzip是一種流行的數(shù)據(jù)壓縮程序。您可以使用gzip壓縮Nginx實(shí)時(shí)文件。這些文件在檢索時(shí)由支持它的瀏覽器解壓縮,好處是web服務(wù)器和瀏覽器之間傳輸?shù)臄?shù)據(jù)量更小,速度更快。
gzip不一定適用于所有文件的壓縮。例如,文本文件壓縮得非常好,通常會(huì)縮小兩倍以上。另一方面,諸如JPEG或PNG文件之類的圖像已經(jīng)按其性質(zhì)進(jìn)行壓縮,使用gzip壓縮很難有好的壓縮效果或者甚至沒有效果。壓縮文件會(huì)占用服務(wù)器資源,因此最好只壓縮那些壓縮效果好的文件。
在本指南中,我們將討論如何配置安裝在Ubuntu 16.04服務(wù)器上的Nginx,以利用gzip壓縮,來減少發(fā)送給網(wǎng)站訪問者的文件的大小。
必備條件要學(xué)習(xí)本教程,您需要:
一個(gè)已安裝Nginx的Ubuntu 16.04服務(wù)器,沒有服務(wù)器的同學(xué)可以在這個(gè)頁面購(gòu)買。 關(guān)于Nginx搭建,可以參考騰訊云開發(fā)者實(shí)驗(yàn)室的這個(gè)教程:https://cloud.tencent.com/dev...
第一步、創(chuàng)建測(cè)試文件這一步中,我們將在默認(rèn)的Nginx目錄中創(chuàng)建幾個(gè)測(cè)試文件來進(jìn)行測(cè)試gzip的壓縮效果。
Nginx不會(huì)分析文件內(nèi)容,他只分析文件后綴,所以,它只是查找文件擴(kuò)展名以確定其MIME類型,這樣nginx就會(huì)對(duì)不同的文件作出不同的壓縮處理。
因?yàn)橹皇菧y(cè)試,所以測(cè)試文件的內(nèi)容無關(guān)緊要。通過適當(dāng)?shù)母奈募?,我們可以欺騙Nginx,讓Nginx認(rèn)為這個(gè)文件是圖像或者是js腳本。
在我們的配置中,Nginx不會(huì)壓縮非常小的文件,因此我們將創(chuàng)建大小恰好為1KB的測(cè)試文件。這將讓我們驗(yàn)證Nginx是否使用壓縮,壓縮一種類型的文件而不是其他類型的文件。
使用創(chuàng)建truncate在默認(rèn)Nginx目錄中命名的1 KB文件test.html。擴(kuò)展名表示它是一個(gè)HTML頁面。
sudo truncate -s 1k /var/www/html/test.html
讓我們以相同的方式創(chuàng)建一些測(cè)試文件:一個(gè)jpg圖像文件,一個(gè)css樣式表和一個(gè)jsJavaScript文件。
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
下一步是檢查NGIX如何對(duì)剛剛創(chuàng)建的文件進(jìn)行壓縮。
第二步、檢查默認(rèn)行為讓我們檢查名為test.html的HTML文件是否被壓縮。該命令從我們的Nginx服務(wù)器請(qǐng)求一個(gè)文件,并指定使用HTTP頭(Accept-Encoding: gzip)來查找gzip壓縮的內(nèi)容。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
作為響應(yīng),您應(yīng)該看到幾個(gè)HTTP響應(yīng)標(biāo)頭:
Nginx響應(yīng)頭
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Tue, 19 Jan 2016 20:04:12 GMT Content-Type: text/html Last-Modified: Tue, 04 Mar 2014 11:46:45 GMT Connection: keep-alive Content-Encoding: gzip
在最后一行中,您可以看到Content-Encoding: gzip。這告訴我們gzip壓縮已用于發(fā)送此文件。這是因?yàn)樵赨buntu 16.04上,Nginx的 gzip在安裝后使用默認(rèn)設(shè)置自動(dòng)啟用了壓縮。
但是,默認(rèn)情況下,Nginx僅壓縮HTML文件。新安裝中的每個(gè)其他文件都將以未壓縮的形式提供。要驗(yàn)證這一點(diǎn),您可以請(qǐng)求以test.jpg相同方式命名的測(cè)試圖像。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg
結(jié)果應(yīng)該與以前略有不同:
Nginx響應(yīng)頭
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Tue, 19 Jan 2016 20:10:34 GMT Content-Type: image/jpeg Content-Length: 0 Last-Modified: Tue, 19 Jan 2016 20:06:22 GMT Connection: keep-alive ETag: "569e973e-0" Accept-Ranges: bytes
Content-Encoding: gzip沒有輸出,這意味著文件是在沒有壓縮的情況下提供。
您可以使用測(cè)試CSS樣式表重復(fù)測(cè)試。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
再一次,輸出中沒有提到壓縮。
CSS文件的Nginx響應(yīng)頭
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Tue, 19 Jan 2016 20:20:33 GMT Content-Type: text/css Content-Length: 0 Last-Modified: Tue, 19 Jan 2016 20:20:33 GMT Connection: keep-alive ETag: "569e9a91-0" Accept-Ranges: bytes
下一步是將Nginx配置支持其他類型文件的壓縮。
第三步、配置Nginx的gzip設(shè)置要更改Nginx的 gzip配置,請(qǐng)使用nano或者其他您喜歡的編輯器,來打開的Nginx主要配置文件。
sudo nano /etc/nginx/nginx.conf
找到gzip設(shè)置部分,如下所示:
. . . ## # `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; . . .
您可以看到默認(rèn)情況下,指令gzip啟用了壓縮gzip on,但使用#注釋符號(hào)注釋了幾個(gè)其他設(shè)置。我們將對(duì)此部分進(jìn)行一些更改:
通過取消注釋所有注釋行來啟用其他設(shè)置(就是刪除#)
添加gzip_min_length 256;指令,告訴Nginx不要壓縮小于256字節(jié)的文件。這是非常小的文件,可以不用壓縮
gzip_types是表示壓縮的文件類型,還可以添加web字體格式、ioc圖標(biāo)和SVG圖像等其他類型文件。
應(yīng)用這些更改后,設(shè)置部分應(yīng)如下所示:
/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 text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; . . .
保存并關(guān)閉文件以退出。
要啟用新配置,請(qǐng)重新加載Nginx。
sudo systemctl reload nginx
下一步是檢查配置的更改是否按預(yù)期工作。
第四步、驗(yàn)證新配置我們可以像在第2步中那樣測(cè)試它,方法是使用curl每個(gè)測(cè)試文件并檢查Content-Encoding: gzip是否有輸出。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg curl -H "Accept-Encoding: gzip" -I http://localhost/test.css curl -H "Accept-Encoding: gzip" -I http://localhost/test.js
現(xiàn)在,只有test.jpg圖像文件才能保持未壓縮狀態(tài)。在所有其他示例中,您應(yīng)該能夠Content-Encoding: gzip在輸出中找到標(biāo)頭。
如果是這種情況,您已gzip成功在Nginx中配置了壓縮!
結(jié)論更改Nginx配置來使用gzip壓縮,是很容易的一件事,而且能帶來不錯(cuò)的提,。不僅帶寬有限的訪問者會(huì)更快地收到該網(wǎng)站,而且Google也會(huì)對(duì)網(wǎng)站加載速度感到滿意。作為現(xiàn)代網(wǎng)絡(luò)和使用的重要組成部分,網(wǎng)站的加載速度越來越受到關(guān)注,這gzip是改進(jìn)它的一大步。
參考文獻(xiàn):《How To Add the gzip Module to Nginx on Ubuntu 16.04》
問答nginx多域名轉(zhuǎn)發(fā)?
相關(guān)閱讀如何在CVM上設(shè)置SSH僅作文件傳輸
如何備份你的MySQL數(shù)據(jù)庫(kù)
MySQL 8.0 版本功能變更介紹
此文已由作者授權(quán)騰訊云+社區(qū)發(fā)布,原文鏈接:https://cloud.tencent.com/dev...
歡迎大家前往騰訊云+社區(qū)或關(guān)注云加社區(qū)微信公眾號(hào)(QcloudCommunity),第一時(shí)間獲取更多海量技術(shù)實(shí)踐干貨哦~
海量技術(shù)實(shí)踐經(jīng)驗(yàn),盡在云加社區(qū)!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40032.html
摘要:前言本文講解的是做為前端開發(fā)人員,對(duì)服務(wù)器的了解還是小白的我,是如何一步步將項(xiàng)目部署在阿里云的服務(wù)器上,并進(jìn)行性能優(yōu)化,達(dá)到頁面秒內(nèi)看到,秒內(nèi)看到首屏內(nèi)容的。搭建的項(xiàng)目是采用了主流的前后端分離思想的,這里只講服務(wù)器環(huán)境搭建與性能優(yōu)化。 showImg(https://segmentfault.com/img/remote/1460000017143281); 前言 本文講解的是:做為前...
摘要:是基于的針對(duì)打包的倉(cāng)庫(kù),更新也很及時(shí)。假如這里要添加黑名單,那就創(chuàng)建表示禁止,支持通配符和正則。防盜鏈基于防盜鏈配置模塊允許文件鏈出的域名白名單盜鏈返回結(jié)果基于用戶的訪問控制身份驗(yàn)證可用于一些私密目錄。 系列文章 Nginx的配置(進(jìn)階):https://segmentfault.com/a/11... 安裝 yum源安裝 $ yum install nginx 源碼安裝 咕咕咕 操作...
摘要:上一章了解了的基礎(chǔ)理論與配置,這一章將介紹在各種不同場(chǎng)景下的不同使用方法一靜態(tài)資源服務(wù)靜態(tài)資源類型非服務(wù)器動(dòng)態(tài)運(yùn)行生成的文件,換句話說,就是可以直接在服務(wù)器上找到對(duì)應(yīng)文件的請(qǐng)求瀏覽器端渲染圖片視頻文件,任意下載文件靜態(tài)資源服務(wù)場(chǎng)景什么是例 上一章了解了nginx的基礎(chǔ)理論與配置,這一章將介紹nginx在各種不同場(chǎng)景下的不同使用方法 一、靜態(tài)資源WEB服務(wù) 1.靜態(tài)資源類型 非服務(wù)器動(dòng)態(tài)...
閱讀 1714·2021-11-22 15:33
閱讀 2085·2021-10-08 10:04
閱讀 3543·2021-08-27 13:12
閱讀 3419·2019-08-30 13:06
閱讀 1467·2019-08-29 16:43
閱讀 1392·2019-08-29 16:40
閱讀 786·2019-08-29 16:15
閱讀 2746·2019-08-29 14:13