自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nginx如何開啟GZIP文件壓縮,你學(xué)會(huì)了嗎?

開發(fā) 前端
在服務(wù)器端 Nginx 啟用 gzip 壓縮,對(duì)于目前流行的單頁面應(yīng)用而言,起到的前端性能優(yōu)化作用的意義就更大了,因?yàn)閱雾撁鎽?yīng)用的界面完全是由 JavaScript 動(dòng)態(tài)繪制出來的,啟用 gzip 壓縮更快速的加載資源文件,特別是 JavaScript 腳本文件,就能盡快地顯示界面,從而提升用戶體驗(yàn)。

簡(jiǎn)介

GZip 是一種改進(jìn)web應(yīng)用程序性能的技術(shù),文件壓縮后再傳輸可以減少傳輸數(shù)據(jù),提升傳輸速度。在Nginx服務(wù)器上開啟Gzip壓縮可以有效減少網(wǎng)絡(luò)傳輸流量,提升網(wǎng)站的訪問速度和性能。

可以作用于任何字節(jié)流的通用壓縮程序。它會(huì)在后臺(tái)記憶一些之前看到的內(nèi)容,并嘗試以高效方式查找并替換重復(fù)的數(shù)據(jù)片段,從而達(dá)到較好的壓效果。但使用 gzip 壓縮的最大錯(cuò)誤之一就是用 gzip 壓縮頁面中的每個(gè)資源文件。

支持資源類型

實(shí)際上,GZip 主要用于對(duì)文本類型的資源進(jìn)行壓縮,例如常用見的文本資源:

  • HTML 文件:text/HTML(默認(rèn)壓縮)、application/xhtml+xml
  • CSS 文件:text/css
  • JS 文件:application/x-javascript、application/javascript、text/javascript
  • JSON文件:application/json、application/geo+json、application/ld+json application/manifest+json、application/x-web-app-manifest+json
  • XML 文件:application/xml、application/atom+xml、application/rdf+xml、application/rss+xml
  • SVG 文件:image/svg+xml;

GZip 對(duì)基于文本的內(nèi)容的資源壓縮效果最好,在壓縮較大文件時(shí)往往可實(shí)現(xiàn)高達(dá) 70-90% 的壓縮率,而如果對(duì)已經(jīng)通過替代算法壓縮過的資源(例如,大多數(shù)圖片格式)運(yùn)行 gzip,則效果甚微,甚至毫無效果。

瀏覽器支持情況

如圖所示,目前所有主流的現(xiàn)代瀏覽器都支持 gzip 壓縮,如下圖所示:

圖片圖片

瀏覽器在發(fā)送請(qǐng)求時(shí)會(huì)自動(dòng)請(qǐng)求該壓縮編碼的格式,如下圖的請(qǐng)求頭信息所示:

圖片圖片

瀏覽器會(huì)自動(dòng)在請(qǐng)求頭(Reqeust header s)信息中添加 Accept-Encoding: gzip 向服務(wù)器請(qǐng)求壓縮編碼格式的文件,gzip 壓縮編碼格式就在其中。

啟用GZip

Nginx是否支持 GZip

nginx 中的 gzip 處理模塊是:ngx_http_gzip_module??梢允褂茫簄ginx -V 命令,查看 nginx 服務(wù)器是否開啟了對(duì) gzip 的支持模塊:

圖片圖片

如果顯示如上圖所示的:–with-http_gzip_ static _module,就說明你的nginx服務(wù)器已經(jīng)支持 gzip 了,可以開始配置 gzip 壓縮了。

未開啟GZIP壓縮

模擬網(wǎng)速慢未開啟壓縮。首先我們對(duì)nginx進(jìn)行限速操作,限制每個(gè)連接的訪問速度為128K來建立一個(gè)比較慢的訪問場(chǎng)景。

修改mall.conf配置文件,進(jìn)行限速操作

server {
    listen       80;
    server_name  mall.tinywan.com;
    
    limit_rate 128k; # 限制網(wǎng)速為128K

    location / {
        root   /usr/share/nginx/html/mall;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

對(duì)mall的前端項(xiàng)目mall.tinywan.com進(jìn)行訪問,我們可以發(fā)現(xiàn)網(wǎng)站中有個(gè)js文件比較大,需要加載12s。

圖片圖片

Nginx 返回請(qǐng)求頭信息如下

圖片圖片

開啟GZIP壓縮

開啟Gzip模塊。在Nginx配置文件中的http塊內(nèi)添加以下內(nèi)容:

http {
    gzip on;
    gzip_types text/plain application/javascript;
}

這里的gzip on表示開啟gzip壓縮,gzip_types指定需要進(jìn)行壓縮的文件類型,例如text/plain表示純文本文件,application/javascript表示JavaScript文件。

完整配置文件

http {

    gzip on; #開啟gzip
    gzip_disable "msie6"; #IE6不使用gzip
    gzip_vary on; #設(shè)置為on會(huì)在Header里增加 "Vary: Accept-Encoding"
    gzip_proxied any; #代理結(jié)果數(shù)據(jù)的壓縮
    gzip_comp_level 6; #gzip壓縮比(1~9),越小壓縮效果越差,但是越大處理越慢,所以一般取中間值
    gzip_buffers 16 8k; #獲取多少內(nèi)存用于緩存壓縮結(jié)果
    gzip_http_version 1.1; #識(shí)別http協(xié)議的版本
    gzip_min_length 1k; #設(shè)置允許壓縮的頁面最小字節(jié)數(shù),超過1k的文件會(huì)被壓縮
    gzip_types application/javascript text/css; #對(duì)特定的MIME類型生效,js和css文件會(huì)被壓縮

    include /etc/nginx/conf.d/*.conf;
}

再次對(duì)mall的前端項(xiàng)目mall.tinywan.com進(jìn)行訪問,我們可以發(fā)現(xiàn)js文件已經(jīng)被壓縮,加載時(shí)間縮短到3.88s,提速3倍左右:

圖片圖片

Nginx返回請(qǐng)求頭中添加了Content-Encoding: gzip的信息

圖片圖片

總結(jié)

在服務(wù)器端 Nginx 啟用 gzip 壓縮,對(duì)于目前流行的單頁面應(yīng)用而言,起到的前端性能優(yōu)化作用的意義就更大了,因?yàn)閱雾撁鎽?yīng)用的界面完全是由 JavaScript 動(dòng)態(tài)繪制出來的,啟用 gzip 壓縮更快速的加載資源文件,特別是 JavaScript 腳本文件,就能盡快地顯示界面,從而提升用戶體驗(yàn)。

啟用 gzip 壓縮除了優(yōu)化了頁面的加載速度外,而對(duì)于公司來講,啟用 gzip 壓縮后,網(wǎng)站對(duì)于網(wǎng)絡(luò)帶寬的需求也降低了,或者說是在現(xiàn)有的帶寬情況下,能夠更加充分的利用帶寬資源,從長期效益來看,也可以間接的降低公司在帶寬上的運(yùn)行成本。

責(zé)任編輯:武曉燕 來源: 開源技術(shù)小棧
相關(guān)推薦

2023-12-07 12:29:49

Nginx負(fù)載均衡策略

2022-11-30 09:54:57

網(wǎng)絡(luò)令牌身份驗(yàn)證

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2024-01-19 08:25:38

死鎖Java通信

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2024-10-31 09:15:09

2023-06-08 07:34:19

HDFS小文件壓縮包

2024-02-06 08:33:54

文件系統(tǒng)SSD

2024-01-05 07:46:15

JS克隆對(duì)象JSON

2022-11-23 14:57:04

2024-11-29 08:53:46

2023-01-28 10:40:56

Java虛擬機(jī)代碼

2022-08-29 08:05:44

Go類型JSON

2023-03-17 16:44:44

Channel進(jìn)程模型

2021-11-26 11:30:07

身高重建隊(duì)列

2024-08-09 08:17:07

SSH服務(wù)器架構(gòu)

2024-08-21 08:27:30

擴(kuò)展數(shù)據(jù)庫服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)