<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Nginx支援靜態和動態兩種包體gzip壓縮方式,分別對應模組ngx_http_gzip_static,ngx_http_gzip。
我們知道gzip是CPU密集型的應用,實時動態壓縮比較消耗CPU資源。另外,如果使用gzip,則sendfile零拷貝技術無法使用。為進一步提高Nginx的效能,我們可以使用靜態gzip壓縮,提前將需要壓縮的檔案壓縮好,當客服請求到達時,直接傳送壓縮好的.gz檔案,如此就減輕了伺服器CPU的壓力,提高了效能。預設ngx_http_gzip_static模組並未啟用,需要重新編譯。
#注:根據需要自行新增其它引數 ./configure --with-http_gzip_static_module
準備.gz檔案:所有待壓縮的檔案,需要保留原始檔和.gz檔案,在相同WEB目錄。如下,以index.html為例。
#壓縮保留原始檔的方法: [root@test01 html]# gzip -c index.html > index.html.gz [root@test01 html]# ll index.* -rw-r--r--. 1 root root 620 Jun 23 2021 index.html -rw-r--r--. 1 root root 401 Jun 23 2021 index.html.gz
使用touch同步原始檔和.gz檔案的修改時間。檔案修改時間對應Last-Modified響應欄位,HTTP快取中使用很廣泛,同步二者時間,目的是保持快取過期判斷的一致性。
touch index.html.gz -r index.html
新增組態檔:
gzip_static on;
gzip_static優先順序高於gzip,$gzip_ratio對於gzip_static不生效,如果gzip_static失效,如缺少.gz,則gzip會生效。
gzip_static生效時,和gzip不同,Content-Encoding和Cotent-Length可以同時存在,因為響應在傳送前已經明確其大小。
實際執行的效果:
[root@test01 html]# curl test --compressed -I HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Wed, 23 Feb 2022 04:14:02 GMT Content-Type: text/html Content-Length: 401 Last-Modified: Wed, 23 Jun 2021 06:31:52 GMT Connection: keep-alive ETag: "60d2d558-191" Content-Encoding: gzip
也可以考慮用always引數
gzip_static always;
always的語意是不考慮使用者端是否支援gzip解壓【注:依據是使用者端傳送的Accept-Encoding】,Nginx都將傳送.gz檔案,而on則是當用戶端不支援gzip解壓時,則傳送原始檔案。
下面是gzip_static on,curl啟用壓縮和不啟用壓縮的對比,可以看到僅當curl啟用壓縮才傳送.gz檔案。
[root@test01 html]# curl test --compressed -I HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Wed, 23 Feb 2022 07:27:43 GMT Content-Type: text/html Content-Length: 401 Last-Modified: Wed, 23 Jun 2021 06:31:52 GMT Connection: keep-alive ETag: "60d2d558-191" Content-Encoding: gzip [root@test01 html]# curl test -I HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Wed, 23 Feb 2022 07:27:49 GMT Content-Type: text/html Content-Length: 620 Last-Modified: Wed, 23 Jun 2021 06:31:52 GMT Connection: keep-alive ETag: "60d2d558-26c" Accept-Ranges: bytes
下面是設定為gzip_static always,curl啟用壓縮和不啟用壓縮的對比,可以發現無論curl是否啟用壓縮,都將傳送.gz檔案。
[root@test01 html]# curl test -I HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Wed, 23 Feb 2022 07:32:56 GMT Content-Type: text/html Content-Length: 401 Last-Modified: Wed, 23 Jun 2021 06:31:52 GMT Connection: keep-alive ETag: "60d2d558-191" Content-Encoding: gzip #使用者端沒啟用壓縮,返回的內容仍然是gzip壓縮的 [root@test01 html]# curl test --compressed -I HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Wed, 23 Feb 2022 07:33:05 GMT Content-Type: text/html Content-Length: 401 Last-Modified: Wed, 23 Jun 2021 06:31:52 GMT Connection: keep-alive ETag: "60d2d558-191" Content-Encoding: gzip [root@test01 html]# curl test --compressed <!DOCTYPE html> <html lang="en"> <head> <title>stream ssl test!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>stream ssl test!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/" rel="external nofollow" >nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/" rel="external nofollow" >nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> #因為沒有啟用壓縮,所以.gz檔案無法解壓,將被當做二進位制檔案輸出,有Warning提示。 [root@test01 html]# curl test Warning: Binary output can mess up your terminal. Use "--output -" to tell Warning: curl to output it to your terminal anyway, or consider "--output Warning: <FILE>" to save to a file. [root@test01 html]#
Chrome中也可以通過控制Accept-Encoding的傳送,模擬是否需要響應的包體壓縮,看下圖:
總之,gzip_static是對gzip的補充,通過簡單的設定,就能使Nginx提供更好的效能。
參考:gzip_static
相關文章:一文讀懂nginx gzip
總結
到此這篇關於一篇文章讀懂nginx中gzip_static模組的文章就介紹到這了,更多相關nginx gzip_static模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45