亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

Nginx作為靜態(tài)資源web服務(wù)并進(jìn)行靜態(tài)資源壓縮

來(lái)源:不言 發(fā)布時(shí)間:2018-12-15 15:47:08 閱讀量:843

這篇文章給大家介紹的內(nèi)容是關(guān)于 Nginx作為靜態(tài)資源web服務(wù)并進(jìn)行靜態(tài)資源壓縮,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

一、靜態(tài)資源web服務(wù)

1015329084-5b63d3b5aa0f3_articlex.jpg

1. 靜態(tài)資源類型

類型文件類型
瀏覽器端渲染HTML、CSS、JS
圖片JEPG、GIF、PNG
視頻FLV、MPEG
文件TXT等其他下載文件

2. 靜態(tài)資源服務(wù)場(chǎng)景-CDN

481542051-5b63d3b5a23db_articlex.jpg

二、靜態(tài)資源核心配置

1. 文件讀取 sendfile

sendfile 是一種高效傳輸文件的模式.
sendfile設(shè)置為on表示啟動(dòng)高效傳輸文件的模式。sendfile可以讓Nginx在傳輸文件時(shí)直接在磁盤和tcp socket之間傳輸數(shù)據(jù)。如果這個(gè)參數(shù)不開(kāi)啟,會(huì)先在用戶空間(Nginx進(jìn)程空間)申請(qǐng)一個(gè)buffer,用read函數(shù)把數(shù)據(jù)從磁盤讀到cache,再?gòu)腸ache讀取到用戶空間的buffer,再用write函數(shù)把數(shù)據(jù)從用戶空間的buffer寫入到內(nèi)核的buffer,最后到tcp socket。開(kāi)啟這個(gè)參數(shù)后可以讓數(shù)據(jù)不用經(jīng)過(guò)用戶buffer。

3963454244-5b45cb6072c87_articlex.jpg

2717467694-5b45cb606f9cd_articlex.jpg

語(yǔ)法

1

2

3

Syntax:        sendfile on | off;

Default:    sendfile off;

Context:    http, server, location, if in location

2. tcp_nopush

在 sendfile 開(kāi)啟的情況下,提高網(wǎng)絡(luò)數(shù)據(jù)包的傳輸效率。
tcp_nopush指令,在連接套接字時(shí)啟用Linux系統(tǒng)下的TCP_CORK。該選項(xiàng)告訴TCP堆棧附加數(shù)據(jù)包,并在它們已滿或當(dāng)應(yīng)用程序通過(guò)顯式刪除TCP_CORK指示發(fā)送數(shù)據(jù)包時(shí)發(fā)送它們。 這使得發(fā)送的數(shù)據(jù)分組是最優(yōu)量,并且因此提高了網(wǎng)絡(luò)數(shù)據(jù)包的傳輸效率。
也就是說(shuō) tcp_nopush=on 時(shí),結(jié)果就是數(shù)據(jù)包不會(huì)馬上傳送出去,等到數(shù)據(jù)包最大時(shí),一次性的傳輸出去,這樣有助于解決網(wǎng)絡(luò)堵塞,雖然有一點(diǎn)點(diǎn)延遲。

語(yǔ)法

1

2

3

Syntax:        tcp_nopush on | off;

Default:    tcp_nopush off;

Context:    http, server, location

3. tcp_nodelay

在 keepalive 連接下,提高網(wǎng)絡(luò)數(shù)據(jù)包的傳輸實(shí)時(shí)性。
tcp_nodelay選項(xiàng)和tcp_nopush正好相反,數(shù)據(jù)包不等待,實(shí)時(shí)發(fā)送給用戶。

語(yǔ)法

1

2

3

Syntax:        tcp_nodelay on | off;

Default:    tcp_nodelay off;

Context:    server, location

4. 壓縮

開(kāi)啟壓縮,可以加快資源響應(yīng)速度,同時(shí)節(jié)省網(wǎng)絡(luò)帶寬資源。

607299760-5b63d3b592736_articlex.jpg

ngx_http_gzip_module

語(yǔ)法

開(kāi)啟關(guān)閉壓縮

1

2

3

Syntax:        gzip on | off;

Default:    gzip off;

Context:    http, server, location, if in location

壓縮等級(jí)配置(壓縮等級(jí)越高,越消耗服務(wù)器資源)

1

2

3

Syntax:    gzip_comp_level level;

Default:    gzip_comp_level 1;

Context:    http, server, location

gzip協(xié)議版本配置

1

2

3

Syntax:    gzip_http_version 1.0 | 1.1;

Default:    gzip_http_version 1.1;

Context:    http, server, location

壓縮擴(kuò)展模塊

預(yù)讀gzip功能 ngx_http_gzip_static_module

1

2

3

Syntax:    gzip_static on | off | always;

Default:    gzip_static off;

Context:    http, server, location

應(yīng)用支持gunzip的壓縮方式 ngx_http_gunzip_module

1

2

3

4

5

6

7

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

三、靜態(tài)資源壓縮實(shí)例

1. vim /etc/nginx/conf.d/static.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

server {

    #開(kāi)啟sendfile,提高網(wǎng)絡(luò)包的傳輸效率

    sendfile on;

 

    #配置txt|xml資源的路徑

    location ~ .*\.(txt|xml)$ {

        #開(kāi)啟壓縮

        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. 創(chuàng)建 /vagrant/doc/a.txt 文件,并查看文件大小

1

2

3

4

5

6

7

[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*

可見(jiàn),a.txt 文件大小為 558K

4. 通過(guò)curl訪問(wèn) 192.168.33.88/a.txt,查看http響應(yīng)頭信息

1

2

3

4

5

6

7

8

9

[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

從響應(yīng)頭信息中可看出服務(wù)器使用了gzip壓縮

5. 通過(guò)瀏覽器訪問(wèn) 192.168.33.88/a.txt,使用開(kāi)發(fā)者工具查看請(qǐng)求文件的大小

1300818894-5b63d3b5910f9_articlex.jpg

可見(jiàn),經(jīng)過(guò)gzip壓縮,請(qǐng)求文件由558K被壓縮到148K,壓縮比例很高。

6. 另外還可以通過(guò)nginx的access.log日志查看傳輸文件的大小

1

2

[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。


標(biāo)簽: PHP
分享:
評(píng)論:
你還沒(méi)有登錄,請(qǐng)先