類型 | 文件類型 |
---|---|
瀏覽器端渲染 | HTML、CSS、JS |
圖片 | JEPG、GIF、PNG |
視頻 | FLV、MPEG |
文件 | TXT等其餘下載文件 |
sendfile 是一種高效傳輸文件的模式.
sendfile設置爲on表示啓動高效傳輸文件的模式。sendfile能夠讓Nginx在傳輸文件時直接在磁盤和tcp socket之間傳輸數據。若是這個參數不開啓,會先在用戶空間(Nginx進程空間)申請一個buffer,用read函數把數據從磁盤讀到cache,再從cache讀取到用戶空間的buffer,再用write函數把數據從用戶空間的buffer寫入到內核的buffer,最後到tcp socket。開啓這個參數後能夠讓數據不用通過用戶buffer。html
Syntax: sendfile on | off; Default: sendfile off; Context: http, server, location, if in location
在 sendfile 開啓的狀況下,提升網絡數據包的傳輸效率。
tcp_nopush指令,在鏈接套接字時啓用Linux系統下的TCP_CORK。該選項告訴TCP堆棧附加數據包,並在它們已滿或當應用程序經過顯式刪除TCP_CORK指示發送數據包時發送它們。 這使得發送的數據分組是最優量,而且所以提升了網絡數據包的傳輸效率。
也就是說 tcp_nopush=on 時,結果就是數據包不會立刻傳送出去,等到數據包最大時,一次性的傳輸出去,這樣有助於解決網絡堵塞,雖然有一點點延遲。node
Syntax: tcp_nopush on | off; Default: tcp_nopush off; Context: http, server, location
在 keepalive 鏈接下,提升網絡數據包的傳輸實時性。
tcp_nodelay選項和tcp_nopush正好相反,數據包不等待,實時發送給用戶。nginx
Syntax: tcp_nodelay on | off; Default: tcp_nodelay off; Context: server, location
開啓壓縮,能夠加快資源響應速度,同時節省網絡帶寬資源。web
開啓關閉壓縮vim
Syntax: gzip on | off; Default: gzip off; Context: http, server, location, if in location
壓縮等級配置(壓縮等級越高,越消耗服務器資源)瀏覽器
Syntax: gzip_comp_level level; Default: gzip_comp_level 1; Context: http, server, location
gzip協議版本配置服務器
Syntax: gzip_http_version 1.0 | 1.1; Default: gzip_http_version 1.1; Context: http, server, location
預讀gzip功能 ngx_http_gzip_static_module網絡
Syntax: gzip_static on | off | always; Default: gzip_static off; Context: http, server, location
應用支持gunzip的壓縮方式 ngx_http_gunzip_moduleapp
Syntax: gunzip on | off; Default: gunzip off; Context: http, server, location Syntax: gunzip_buffers number size; Default: gunzip_buffers 32 4k|16 8k; Context: http, server, location
server { #開啓sendfile,提升網絡包的傳輸效率 sendfile on; #配置txt|xml資源的路徑 location ~ .*\.(txt|xml)$ { #開啓壓縮 gzip on; gzip_http_version 1.1; gzip_comp_level 1; gzip_types text/plain application/xml; root /vagrant/doc; } }
/vagrant/doc/a.txt
文件,並查看文件大小[root/etc/nginx]# curl http://www.sina.com.cn/ > /vagrant/doc/a.txt % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 557k 100 557k 0 0 488k 0 0:00:01 0:00:01 --:--:-- 488k [root/etc/nginx]# ll /vagrant/doc/a.txt -rwxrwxrwx 1 vagrant vagrant 558K 7月 11 10:57 /vagrant/doc/a.txt*
可見,a.txt 文件大小爲 558Kcurl
[root/etc/nginx]# curl -I 192.168.33.88/a.txt -H Accept-Encoding:gzip,defalte HTTP/1.1 200 OK Server: nginx/1.14.0 Date: Wed, 11 Jul 2018 11:01:43 GMT Content-Type: text/plain Last-Modified: Wed, 11 Jul 2018 10:57:22 GMT Connection: keep-alive ETag: W/"5b45e292-8b47f" Content-Encoding: gzip
從響應頭信息中可看出服務器使用了gzip壓縮
可見,通過gzip壓縮,請求文件由558K被壓縮到148K,壓縮比例很高。
[root/etc/nginx]# tail /var/log/nginx/access.log 192.168.33.1 - - [11/Jul/2018:11:02:46 +0000] "GET /a.txt HTTP/1.1" 200 151549 "-" "Chrome/67.0.3396.99" "-"
可看出傳輸文件大小爲 151549,單位是B,換算成KB約爲148KB。