Nginx開啓Gzip壓縮功能, 可使網站的css、js 、xml、html 文件在傳輸時進行壓縮,提升訪問速度, 進而優化Nginx性能! Web網站上的圖片,視頻等其它多媒體文件以及大文件,由於壓縮效果很差,因此對於圖片沒有必要支壓縮,若是想要優化,能夠圖片的生命週期設置長一點,讓客戶端來緩存。 開啓Gzip功能後,Nginx服務器會根據配置的策略對發送的內容, 如css、js、xml、html等靜態資源進行壓縮, 使得這些內容大小減小,在用戶接收到返回內容以前對其進行處理,以壓縮後的數據展示給客戶。這樣不只能夠節約大量的出口帶寬,提升傳輸效率,還能提高用戶快的感知體驗, 一箭雙鵰; 儘管會消耗必定的cpu資源,可是爲了給用戶更好的體驗仍是值得的。javascript
通過Gzip壓縮後頁面大小能夠變爲原來的30%甚至更小,這樣,用戶瀏覽頁面的時候速度會快得多。Gzip 的壓縮頁面須要瀏覽器和服務器雙方都支持,實際上就是服務器端壓縮,傳到瀏覽器後瀏覽器解壓並解析。瀏覽器那裏不須要咱們擔憂,由於目前的巨大多數瀏覽器 都支持解析Gzip過的頁面。php
Gzip壓縮做用:將響應報⽂發送⾄客戶端以前能夠啓⽤壓縮功能,這可以有效地節約帶寬,並提⾼響應⾄客戶端的速度。Gzip壓縮能夠配置http,server和location模塊下。Nginx開啓Gzip壓縮功能的配置以下:css
#修改nginx配置文件 /usr/local/nginx/conf/nginx.conf [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #將如下配置放到nginx.conf的http{ ... }節點中 #修改配置爲 gzip on; #開啓gzip壓縮功能 gzip_min_length 10k; #設置容許壓縮的頁面最小字節數; 這裏表示若是文件小於10個字節,就不用壓縮,由於沒有意義,原本就很小. gzip_buffers 4 16k; #設置壓縮緩衝區大小,此處設置爲4個16K內存做爲壓縮結果流緩存 gzip_http_version 1.1; #壓縮版本 gzip_comp_level 2; #設置壓縮比率,最小爲1,處理速度快,傳輸速度慢;9爲最大壓縮比,處理速度慢,傳輸速度快; 這裏表示壓縮級別,能夠是0到9中的任一個,級別越高,壓縮就越小,節省了帶寬資源,但同時也消耗CPU資源,因此通常折中爲6 gzip types text/css text/xml application/javascript; #制定壓縮的類型,線上配置時儘量配置多的壓縮類型! gzip_disable "MSIE [1-6]\."; #配置禁用gzip條件,支持正則。此處表示ie6及如下不啓用gzip(由於ie低版本不支持) gzip vary on; #選擇支持vary header;改選項可讓前端的緩存服務器緩存通過gzip壓縮的頁面; 這個能夠不寫,表示在傳送數據時,給客戶端說明我使用了gzip壓縮
線上使用的Gzip壓縮配置html
[root@external-lb02 ~]# cat /data/nginx/conf/nginx.conf ........ http { ....... gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 9; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; gzip_disable "MSIE [1-6]\."; gzip_vary on; }
若是不開啓Gzip壓縮功能(即註釋掉Gzip的相關配置), 查看某個圖片大小前端
[root@external-lb02 ~]# ll -h /data/web//www/test.bmp -rw-r--r-- 1 root root 453K 3月 14 18:43 /data/web//www/test.bmp
以下可知, 文件沒有被壓縮,文件傳輸大小仍是400多Kjava
若是開啓Nginx的Gzip壓縮功能(即打開Gzip的相關配置), 而後再次訪問test.bmp圖片, 發現壓縮後的該圖片文件傳輸大小隻有200多K !nginx
經過上面測試對比, 發現Nginx開啓Gzip壓縮功能後, 定義的gzip type的文件在傳輸時的大小明顯變小, 這樣這會大大提升nginx訪問性能. web
直接用curl測試命令:算法
[root@fvtlb02 ~]# curl -I -H "Accept-Encoding: gzip, deflate" "http://fvtvfc-web.kevin.com/service-worker.js" HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Mon, 26 Nov 2018 02:19:16 GMT Content-Type: application/javascript; charset=utf-8 Connection: keep-alive Vary: Accept-Encoding Last-Modified: Sun, 25 Nov 2018 22:28:15 GMT Vary: Accept-Encoding ETag: W/"5bfb21ff-40be" Content-Encoding: gzip 如上,response header頭信息中出現"Conten_Encoding: gzip" , 就說明Nginx已開啓了壓縮 (在瀏覽器訪問, 經過F12看請求的響應頭部 也是同樣)
Nginx的Gzip壓縮功能雖然好用,可是下面兩類文件資源不太建議啓用此壓縮功能。
1) 圖片類型資源 (還有視頻文件)
緣由:圖片如jpg、png文件自己就會有壓縮,因此就算開啓gzip後,壓縮前和壓縮後大小沒有多大區別,因此開啓了反而會白白的浪費資源。(能夠試試將一張jpg圖片壓縮爲zip,觀察大小並無多大的變化。雖然zip和gzip算法不同,可是能夠看出壓縮圖片的價值並不大)json
2) 大文件資源緣由:會消耗大量的cpu資源,且不必定有明顯的效果。