一、靜態資源web服務
1. 靜態資源類型
類型文件類型瀏覽器端渲染HTML、CSS、JS圖片JEPG、GIF、PNG視頻FLV、MPEG文件TXT等其他下載文件2. 靜態資源服務場景-CDN
二、靜態資源核心配置
1. 文件讀取 sendfile
sendfile 是一種高效傳輸文件的模式.
sendfile設置為on表示啟動高效傳輸文件的模式。sendfile可以讓Nginx在傳輸文件時直接在磁盤和tcp socket之間傳輸數據。如果這個參數不開啟,會先在用戶空間(Nginx進程空間)申請一個buffer,用read函數把數據從磁盤讀到cache,再從cache讀取到用戶空間的buffer,再用write函數把數據從用戶空間的buffer寫入到內核的buffer,最后到tcp socket。開啟這個參數后可以讓數據不用經過用戶buffer。
Syntax: sendfile on | off;Default: sendfile off;Context: http, server, location, if in location
2. tcp_nopush
在 sendfile 開啟的情況下,提高網絡數據包的傳輸效率。
tcp_nopush指令,在連接套接字時啟用html' target='_blank'>Linux系統下的TCP_CORK。該選項告訴TCP堆棧附加數據包,并在它們已滿或當應用程序通過顯式刪除TCP_CORK指示發送數據包時發送它們。 這使得發送的數據分組是最優量,并且因此提高了網絡數據包的傳輸效率。
也就是說 tcp_nopush=on 時,結果就是數據包不會馬上傳送出去,等到數據包最大時,一次性的傳輸出去,這樣有助于解決網絡堵塞,雖然有一點點延遲。
語法
Syntax: tcp_nopush on | off;Default: tcp_nopush off;Context: http, server, location
3. tcp_nodelay
在 keepalive 連接下,提高網絡數據包的傳輸實時性。
tcp_nodelay選項和tcp_nopush正好相反,數據包不等待,實時發送給用戶。
語法
Syntax: tcp_nodelay on | off;Default: tcp_nodelay off;Context: server, location
4. 壓縮
開啟壓縮,可以加快資源響應速度,同時節省網絡帶寬資源。
ngx_http_gzip_module
語法
開啟關閉壓縮
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_module
Syntax: gunzip on | off;Default: gunzip off;Context: http, server, locationSyntax: gunzip_buffers number size;Default: gunzip_buffers 32 4k|16 8k;Context: http, server, location
三、靜態資源壓縮實例
1. vim /etc/nginx/conf.d/static.conf
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;}
2. nginx -s reload 重新載入nginx配置文件
3. 創建 /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 Speed100 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 文件大小為 558K
4. 通過curl訪問 192.168.33.88/a.txt,查看http響應頭信息
[root/etc/nginx]# curl -I 192.168.33.88/a.txt -H Accept-Encoding:gzip,defalteHTTP/1.1 200 OKServer: nginx/1.14.0Date: Wed, 11 Jul 2018 11:01:43 GMTContent-Type: text/plainLast-Modified: Wed, 11 Jul 2018 10:57:22 GMTConnection: keep-aliveETag: W/ 5b45e292-8b47f Content-Encoding: gzip
從響應頭信息中可看出服務器使用了gzip壓縮
5. 通過瀏覽器訪問 192.168.33.88/a.txt,使用開發者工具查看請求文件的大小
可見,經過gzip壓縮,請求文件由558K被壓縮到148K,壓縮比例很高。
6. 另外還可以通過nginx的access.log日志查看傳輸文件的大小
[root/etc/nginx]# tail /var/log/nginx/access.log192.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。
相關推薦:
nginx start error nginx反向代理 nginx是什么 nginx重
Nginx安裝lua-nginx-module模塊
Linux下創建nginx腳本-start、stop、reload…,nginx-start_PHP教程
以上就是Nginx作為靜態資源web服務并進行靜態資源壓縮的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選