這篇博客主要介紹什么是靜態(tài)資源。nginx將圖片,文件等類型壓縮來(lái)減少http請(qǐng)求數(shù)來(lái)達(dá)到優(yōu)化前端性能,可以在一定程度上能減少web服務(wù)器的壓力
1.靜態(tài)資源類型
前端向后臺(tái)服務(wù)器進(jìn)行請(qǐng)求,一般分為兩種靜態(tài)請(qǐng)求和動(dòng)態(tài)請(qǐng)求。靜態(tài)請(qǐng)求常見(jiàn)列子客戶端請(qǐng)求圖片,css,js,html文件等。動(dòng)態(tài)請(qǐng)求是需要服務(wù)進(jìn)行動(dòng)態(tài)運(yùn)算,封裝數(shù)據(jù)然后在返回給客戶端。
[圖片上傳失敗...(image-c748f4-1548043362057)]
| 靜態(tài)類型 | 種類 |
|---|---|
| 瀏覽器端渲染 | HTML、CSS、JS |
| 圖片 | JPEG、GIF、PNG |
| 視頻 | FLV、MPEG |
| 文件 | TXT、等任意下載文件 |
2.靜態(tài)資源服務(wù)場(chǎng)景cdn
[圖片上傳失敗...(image-51e27c-1548043362057)]
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN是構(gòu)建在網(wǎng)絡(luò)之上的內(nèi)容分發(fā)網(wǎng)絡(luò),依靠部署在各地的邊緣服務(wù)器,通過(guò)中心平臺(tái)的負(fù)載均衡、內(nèi)容分發(fā)、調(diào)度等功能模塊,使用戶就近獲取所需內(nèi)容,降低網(wǎng)絡(luò)擁塞,提高用戶訪問(wèn)響應(yīng)速度和命中率。
3.ngx_http_gzip_module
1.gzip
啟用或禁用gzipping響應(yīng)。
Syntax: gzip on | off;
Default: gzip off;
Context: http, server, location, if in location
2.gzip_buffers
設(shè)置用于壓縮響應(yīng)的緩沖區(qū)的數(shù)量和大小。默認(rèn)情況下,緩沖區(qū)大小等于一個(gè)內(nèi)存頁(yè)面。這是4K或8K,具體取決于平臺(tái)。
Syntax: gzip_buffers number size;
Default: gzip_buffers 32 4k|16 8k;
Context: http, server, location
3.gzip_comp_level
設(shè)置響應(yīng)的gzip壓縮級(jí)別。可接受的值范圍為1到9。
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location
4.gzip_disable
對(duì)具有與任何指定正則表達(dá)式匹配的User-Agent標(biāo)頭字段的請(qǐng)求禁用gzipping響應(yīng)。
Syntax: gzip_disable regex ...;
Default: —
Context: http, server, location
5.gzip_http_version
設(shè)置壓縮響應(yīng)所需的最低HTTP請(qǐng)求版本。
Syntax: gzip_http_version 1.0 | 1.1;
Default: gzip_http_version 1.1;
Context: http, server, location
6.gzip_min_length
設(shè)置將被gzip壓縮的響應(yīng)的最小長(zhǎng)度。長(zhǎng)度僅由“Content-Length”響應(yīng)頭字段確定。
Syntax: gzip_min_length length;
Default: gzip_min_length 20;
Context: http, server, location
7.gzip_proxied
根據(jù)請(qǐng)求和響應(yīng)啟用或禁用對(duì)代理請(qǐng)求的響應(yīng)的gzipping。代理請(qǐng)求的事實(shí)由“Via”請(qǐng)求頭字段的存在確定。該指令接受多個(gè)參數(shù):
Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
Default: gzip_proxied off;
Context: http, server, location
| 參數(shù) | 說(shuō)明 |
|---|---|
| off | 禁用所有代理請(qǐng)求的壓縮,忽略其他參數(shù) |
| expired | 如果響應(yīng)頭包含“Expires”字段,其值為禁用緩存,則啟用壓縮 |
| no-cache | 如果響應(yīng)頭包含帶有“no-cache”參數(shù)的“Cache-Control”字段,則啟用壓縮 |
| no-store | 如果響應(yīng)頭包含帶有“no-store”參數(shù)的“Cache-Control”字段,則啟用壓縮 |
| private | 如果響應(yīng)頭包含帶有“private”參數(shù)的“Cache-Control”字段,則啟用壓縮 |
| no_last_modified | 如果響應(yīng)頭不包含“Last-Modified”字段,則啟用壓縮 |
| no_etag | 如果響應(yīng)頭不包含“ETag”字段,則啟用壓縮 |
| auth | 如果請(qǐng)求標(biāo)頭包含“授權(quán)”字段,則啟用壓縮 |
| any | 為所有代理請(qǐng)求啟用壓縮 |
8.gzip_types
除了“text / html”之外,還允許對(duì)指定的MIME類型進(jìn)行g(shù)zipping響應(yīng)。特殊值“*”匹配任何MIME類型(0.8.29)。始終壓縮“text / html”類型的響應(yīng)。
Syntax: gzip_types mime-type ...;
Default: gzip_types text/html;
Context: http, server, location
9.gzip_vary
如果指令gzip,gzip_static或gunzip處于活動(dòng)狀態(tài),則啟用或禁用插入“Vary:Accept-Encoding”響應(yīng)頭字段。
Syntax: gzip_vary on | off;
Default: gzip_vary off;
Context: http, server, location
4.示例配置
1.圖片配置
location ~ .*\.(jpg|gif|png)$ {
root /opt/app/code/images;
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
2.文件下載
location ~ .*\.(txt|xml)$ {
root /opt/app/code/doc;
gzip on;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
3.預(yù)讀gzip功能
location ~ ^/download {
root /opt/app/code;
gzip_static on;
tcp_nopush on;
}