国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

這篇具有很好參考價(jià)值的文章主要介紹了Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.引出問(wèn)題

Nginx可以作為靜態(tài)資源服務(wù)器,比如我們?cè)L問(wèn)192.168.110.97:80,熟悉的nginx歡迎界面,這其實(shí)也是nginx為我們提供的一個(gè)靜態(tài)文件:index.html。

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

既然是靜態(tài)資源,那我們能否優(yōu)化一下傳輸效率呢?

1)sendfile文件高效傳輸模式。如何開(kāi)啟?它的原理到底是什么呢?

2)數(shù)據(jù)量大,傳輸效率低,如何進(jìn)行優(yōu)化?

2.sendfile高效傳輸

nginx.conf中配置sendfile on;指令就可以開(kāi)啟文件高效傳輸模式,那么它的原理是什么呢?

話不多說(shuō),走起。

sendfile的實(shí)現(xiàn)原理是通過(guò)調(diào)用內(nèi)核提供的sendfile()調(diào)用來(lái)實(shí)現(xiàn)的。調(diào)用過(guò)程中,內(nèi)核會(huì)將源文件的數(shù)據(jù)直接傳輸?shù)絪ocket中,而不需要將數(shù)據(jù)先拷貝到用戶空間再進(jìn)行傳輸。這樣就可以避免數(shù)據(jù)在用戶空間和內(nèi)核空間之間的多次拷貝,從而提高了文件傳輸?shù)男省?/p>

既然是這樣,那么普通傳輸模式和高效傳輸模式之間的區(qū)別就越發(fā)清晰了。

1)普通傳輸模式

發(fā)起文件讀取命令–》讀取文件到內(nèi)核空間–》拷貝文件到用戶空間–》拷貝文件到socket內(nèi)核空間–》傳輸給socket

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

2)高效傳輸模式

發(fā)起文件讀取命令–》讀取文件到內(nèi)核空間–》拷貝文件到socket內(nèi)核空間–》傳輸給socket

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

3)小結(jié)

1)普通傳輸模式涉及到多次內(nèi)核態(tài)與用戶態(tài)之間的切換,這很消耗系統(tǒng)資源。

2)sendfile高效傳輸模式,直接在內(nèi)核態(tài)進(jìn)行數(shù)據(jù)傳輸,不涉及內(nèi)核態(tài)與用戶態(tài)之間的切換,傳輸效率大大提升。

3.gzip文件壓縮

前面我們提到過(guò),開(kāi)啟sendfile文件高效傳輸模式,可以提升傳輸?shù)男?。其?shí),只做到這一步還是不夠的,一旦文件的數(shù)據(jù)量較大,傳輸?shù)乃俣扔謺?huì)大打折扣。

比如一部電影的大小是2G,下載時(shí)間很長(zhǎng),嚴(yán)重影響我們的觀影體驗(yàn),如果能夠壓縮到1G,那傳輸?shù)臅r(shí)間就會(huì)減半。

Nginx為我們提供了gzip相關(guān)的模塊,幫助實(shí)現(xiàn)對(duì)文件的壓縮。

3.1 ngx_http_gzip_moudle

據(jù)nginx官方文檔介紹,通過(guò)ngx_http_gzip_moudle提供的壓縮功能,有助于將數(shù)據(jù)的大小減少一半甚至更多。??

nginx已默認(rèn)為我們安裝該模塊。接下來(lái)我們配置其指令。

1)配置是否開(kāi)啟gzip

作用域:http, server, location, if in location

語(yǔ)法:gzip on | off;

默認(rèn)值gzip off;

2)配置gzip可壓縮的響應(yīng)類型

作用域:http, server, location

語(yǔ)法:gzip_types mime-type …;

默認(rèn)值gzip_types text/html;

可以看到,我們可以配置多個(gè)mime-type,并且可以使用*匹配所有的mime-type。

??Tips:通常不會(huì)使用*進(jìn)行匹配,如果所有的類型都開(kāi)啟壓縮,如果本身靜態(tài)資源的可壓縮性不高,就會(huì)造成系統(tǒng)資源的浪費(fèi)。

到這里,我們可以來(lái)體驗(yàn)一下開(kāi)啟gzip之后的壓縮效果。

1)準(zhǔn)備靜態(tài)文件/usr/local/nginx/html/jquery.js

下載地址:https://code.jquery.com/jquery-3.6.4.js

2)增加location塊

location /jquery {
	root   html;
}

訪問(wèn)http://192.168.110.98/jquery.js,查看文件大?。?04kb

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

3)開(kāi)啟gzip

為了保持配置文件清爽,我們只對(duì)gzip壓縮相關(guān)指令進(jìn)行注釋說(shuō)明。

worker_processes  1;
gzip on;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        # 測(cè)試gzip壓縮效果
        location /jquery {
        	# 配置可壓縮的響應(yīng)類型
        	gzip_types text/javascript;
            root   html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

訪問(wèn)http://192.168.110.98/jquery.js,查看文件大?。?07kb

Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍

3)配置gzip壓縮級(jí)別

作用域:http, server, location

語(yǔ)法:gzip_comp_level level;

默認(rèn)值gzip_comp_level 1;

??Tips:gzip默認(rèn)壓縮級(jí)別為1,可設(shè)置的值為1-9,值越高壓縮程度越高,但是不一定值越高效果就越好,我們還是需要根據(jù)文件的可壓縮性設(shè)置合適的壓縮級(jí)別,否則也會(huì)造成系統(tǒng)資源的浪費(fèi)。

4)配置根據(jù)User-Agent禁用gzip

作用域:http, server, location

語(yǔ)法:gzip_disable regex …;

作用:如果請(qǐng)求的User-Agent頭信息與正則表達(dá)式匹配,則禁用gzip壓縮功能

??Tips:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 YaBrowser/23.3.4.594 Yowser/2.5 Safari/537.36,可以根據(jù)需要配置正則表達(dá)式。

5)配置gzip可壓縮響應(yīng)的最小長(zhǎng)度

作用域:http, server, location

語(yǔ)法:gzip_min_length length;

默認(rèn)值gzip_min_length 20;

??Tips:默認(rèn)單位為byte,長(zhǎng)度是由Content-Length響應(yīng)頭決定,如果長(zhǎng)度低于設(shè)置的值,就關(guān)閉gzip壓縮。建議設(shè)置為1kb以上。

6)gzip與sendfile的沖突問(wèn)題

我們知道,開(kāi)啟sendfile文件高效傳輸模式,文件在內(nèi)核空間直接傳輸給socket,不會(huì)經(jīng)過(guò)用戶程序,開(kāi)啟gzip之后,該模式也就失效了。那么怎么解決這個(gè)問(wèn)題呢?

3.2 ngx_http_gzip_static_module

前面提到的gzip與sendfile的沖突問(wèn)題,我們可以通過(guò)引入ngx_http_gzip_static_module模塊來(lái)進(jìn)行解決。該模塊允許發(fā)送文件擴(kuò)展名為.gz的預(yù)壓縮文件。

??Tips:nginx默認(rèn)不會(huì)添加該模塊,需要我們自行引入。

配置指令:

作用域:http, server, location

語(yǔ)法:gzip_static on | off | always;

默認(rèn)值gzip_static off;

gzip_static on;gzip_static off;都會(huì)檢測(cè)是否存在.gz預(yù)壓縮文件。

gzip_static always;會(huì)始終使用.gz預(yù)壓縮文件。

1)對(duì)文件進(jìn)行壓縮,使用gzip命令

cd /usr/local/nginx/html
gzip jquery.js

2)修改配置文件

# gzip on;
gzip_static on;

我們?cè)俅卧L問(wèn)http://192.168.110.98/jquery.js,文件大小為87.5KB,訪問(wèn)的是壓縮過(guò)的.gz文件。

以上就是Nginx對(duì)靜態(tài)資源傳輸?shù)膬?yōu)化,Nginx是多模塊化的,還有很多高級(jí)功能,我們后面繼續(xù)探索。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438019.html

到了這里,關(guān)于Nginx靜態(tài)資源傳輸優(yōu)化,文件高效傳輸,事半功倍的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 成功解決 Nginx更新靜態(tài)資源無(wú)效 ,Nginx靜態(tài)資源更新不及時(shí),Nginx清除緩存

    成功解決 Nginx更新靜態(tài)資源無(wú)效 ,Nginx靜態(tài)資源更新不及時(shí),Nginx清除緩存

    使用 nginx做動(dòng)靜分離,在將服務(wù)器中的靜態(tài)資源修改后,訪問(wèn)頁(yè)面,發(fā)現(xiàn)頁(yè)面沒(méi)有及時(shí)更新。 我這里是清除了瀏覽器緩存。 有關(guān)nginx禁止走緩存、直接走服務(wù)器請(qǐng)參考以下文章。 資料參考:Nginx更新靜態(tài)資源不生效 我更新了靜態(tài)資源下的一個(gè)文件。然后正常情況應(yīng)該是在點(diǎn)

    2024年02月16日
    瀏覽(27)
  • 記錄使用nginx部署靜態(tài)資源流程,以及遇到的訪問(wèn)靜態(tài)資源404問(wèn)題

    記錄使用nginx部署靜態(tài)資源流程,以及遇到的訪問(wèn)靜態(tài)資源404問(wèn)題

    將網(wǎng)站靜態(tài)資源(HTML,JavaScript,CSS,img等文件)與后臺(tái)應(yīng)用分開(kāi)部署實(shí)現(xiàn) 動(dòng)靜分離 ,提高用戶訪問(wèn)靜態(tài)代碼的速度,降低對(duì)后臺(tái)應(yīng)用訪問(wèn),減輕后臺(tái)服務(wù)器的壓力。 這里我選擇放在了 html文件夾 下,(也可以放在和html文件夾同級(jí),或其它位置 打開(kāi) conf文件夾 打開(kāi)總配置文

    2024年02月08日
    瀏覽(26)
  • 【Nginx】靜態(tài)資源部署(上)

    【Nginx】靜態(tài)資源部署(上)

    上網(wǎng)去搜索訪問(wèn)資源對(duì)于我們來(lái)說(shuō)并不陌生,通過(guò)瀏覽器發(fā)送一個(gè)HTTP請(qǐng)求實(shí)現(xiàn)從客戶端發(fā)送請(qǐng)求到服務(wù)器端獲取所需要內(nèi)容后并把內(nèi)容回顯展示在頁(yè)面的一個(gè)過(guò)程。這個(gè)時(shí)候,我們所請(qǐng)求的內(nèi)容就分為兩種類型: 靜態(tài)資源、 動(dòng)態(tài)資源 靜態(tài)資源即指在服務(wù)器端真實(shí)存在并且能

    2024年01月21日
    瀏覽(20)
  • Nginx(2)靜態(tài)資源部署

    Nginx(2)靜態(tài)資源部署

    上網(wǎng)搜索訪問(wèn)資源是通過(guò)瀏覽器發(fā)送一個(gè)HTTP請(qǐng)求實(shí)現(xiàn)從客戶端發(fā)送請(qǐng)求到服務(wù)器端獲取所需要內(nèi)容后并把內(nèi)容回顯展示在頁(yè)面。這時(shí)所請(qǐng)求的內(nèi)容就分為兩種類型,一類是靜態(tài)資源、一類是動(dòng)態(tài)資源。 靜態(tài)資源: 指在服務(wù)器端真實(shí)存在并且能直接拿來(lái)展示的一些文件,比如

    2024年02月07日
    瀏覽(21)
  • nginx訪問(wèn)靜態(tài)資源

    nginx訪問(wèn)靜態(tài)資源

    nginx訪問(wèn)靜態(tài)資源 打開(kāi)nginx配置文件 只需修改成或者添加一個(gè)location,就可以訪問(wèn) html路徑下所有文件了 如果只需要訪問(wèn)html特定文件夾內(nèi)容,需要指定 效果

    2024年02月13日
    瀏覽(16)
  • Nginx訪問(wèn)靜態(tài)資源配置

    關(guān)于 alias和root配置的說(shuō)明: 一般情況下,在nginx配置中的良好習(xí)慣是: 1)在location /中,即路徑為“ / ”時(shí), 配置root目錄; 2)在location /path中,即路徑包含指定內(nèi)容,如“ localtion /imgs ”時(shí), 配置alias虛擬目錄。

    2024年02月09日
    瀏覽(19)
  • 如何在nginx中配置靜態(tài)資源

    如何在nginx中配置靜態(tài)資源

    ? 在nginx中配置靜態(tài)資源首先要保證你的項(xiàng)目是通過(guò)nginx來(lái)訪問(wèn)網(wǎng)關(guān)請(qǐng)求請(qǐng)求的!,因?yàn)殪o態(tài)資源是保存在nginx中的,可以大大的減少運(yùn)行速度! ? 首先,我們需要將靜態(tài)資源導(dǎo)入到nginx中 譬如:你現(xiàn)在有一個(gè)靜態(tài)資源的文件夾!包含你項(xiàng)目的所有靜態(tài)資源,將其放入到ngi

    2024年02月16日
    瀏覽(21)
  • 高效學(xué)習(xí)方法和工具推薦,讓你事半功倍!

    本文介紹了五種高效學(xué)習(xí)方法,包括制定詳細(xì)的學(xué)習(xí)計(jì)劃、集中注意力、不斷復(fù)習(xí)、采用多種學(xué)習(xí)方式和利用小休息。同時(shí),還推薦了五個(gè)高效學(xué)習(xí)工具和平臺(tái),包括Coursera、Duolingo、Quizlet、Khan Academy和Anki,讓你在學(xué)習(xí)中事半功倍,輕松掌握知識(shí)! 制定詳細(xì)的學(xué)習(xí)計(jì)劃 制定

    2024年02月02日
    瀏覽(31)
  • 【Nginx】靜態(tài)資源部署、反向代理、負(fù)載均衡

    【Nginx】靜態(tài)資源部署、反向代理、負(fù)載均衡

    個(gè)人簡(jiǎn)介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級(jí)博主、專家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過(guò)程~ 個(gè)人主頁(yè):.29.的博客 學(xué)習(xí)社區(qū):進(jìn)去逛一逛~ nginx配置文件整體分為三部分: 全局塊 :Nginx運(yùn)行相關(guān)的全局配置 events塊 :網(wǎng)絡(luò)連接相關(guān)的配置 http塊 :代

    2024年02月13日
    瀏覽(18)
  • Minio + Nginx 實(shí)現(xiàn)靜態(tài)資源對(duì)外訪問(wèn)

    ? ? ? ? 公司交付項(xiàng)目,文件服務(wù)java + minio實(shí)現(xiàn)文件基本功能。其中包含文件上傳與下載與在線預(yù)覽,由于文件下載功能實(shí)現(xiàn)方式問(wèn)題(web直接調(diào)用文件預(yù)覽接口,有minio直接返回可預(yù)覽路徑二次請(qǐng)求實(shí)現(xiàn)文件下載)。 ? ? ? ? 在公司局域網(wǎng)內(nèi)沒(méi)有問(wèn)題,到客戶環(huán)境文件無(wú)法

    2024年02月08日
    瀏覽(37)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包