HttpGzipStaticModule Nginx壓縮傳輸
在從磁碟向支援gzip的客戶端提供一個檔案時,這個模組將會在同樣的目錄(或者叫位置)中查詢同請求檔名相同的、以".gz"格式結尾的檔案,這個檔案被稱為檔案的“預壓縮格式”,之所以稱為“預壓縮格式”,是因為Nginx不會去對該檔案進行壓縮,即使是該檔案被訪問之後也不會產生".gz"格式的檔案,因此需要我們自己壓縮。那麼這種機制的作用是什麼呢?很簡單,這麼做的原因在於避免每次請求都將對同一個檔案進行壓縮。
ngx_http_gzip_static_module從nginx 0.6.24版本開始提供,但是在預設安裝中它是不會被編譯安裝,因此,在編譯時需要指定--with-http_gzip_static_module選項。
配置示例
gzip_static on; gzip_http_version 1.1; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; gzip_vary on; |
指 令
指令名稱:gzip_static
功 能:啟用該模組。需要注意的是,確定壓縮版本和非壓縮版本的時間戳要匹配,以便提供最新的內容。
語 法: gzip_static on|off
默 認 值: gzip_static off
使用環境: http, server, location
以下命令參考NginxHttpGzipModule模組:
指令名稱:gzip_http_version
指令名稱:gzip_proxied
指令名稱:gzip_disable
指令名稱:gzip_vary
使用例項
在下面的例子中我們先為現有的網頁index.html生成一個".gz"格式的檔案,即index.html.gz,然後測試訪問;在對index.html檔案進行修改,然後再訪問測試。
新增配置
gzip on; gzip_types text/plain application/xml; gzip_static on; |
訪問測試
生成index.html檔案的另一個格式index.html.gz:
[root@mfsmaster html]# ls index.html [root@mfsmaster html]#cat index.html
[root@mfsmaster html]# gzip -c index.html > index.html.gz [root@mfsmaster html]# ls index.html index.html.gz |
確定檔案的訪問時間:
[root@mfsmaster html]# stat index.* File: ‘index.html’ Size: 167 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394667 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 16:45:20.339995192 +0800 Modify: 2011-08-18 16:44:16.746662848 +0800 Change: 2011-08-18 16:44:16.746662848 +0800 File: ‘index.html.gz’ Size: 151 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394635 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 16:45:20.338995344 +0800 Modify: 2011-08-18 16:45:20.339995192 +0800 Change: 2011-08-18 16:45:20.339995192 +0800 |
訪問該檔案:
檢視檔案的訪問時間
[root@mfsmaster html]# stat index.* File: ‘index.html’ Size: 167 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394667 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 16:45:20.339995192 +0800 Modify: 2011-08-18 16:44:16.746662848 +0800 Change: 2011-08-18 16:44:16.746662848 +0800 File: ‘index.html.gz’ Size: 151 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394635 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 16:59:01.040229792 +0800 Modify: 2011-08-18 16:45:20.339995192 +0800 Change: 2011-08-18 16:45:20.339995192 +0800 |
我們比較以下這兩個檔案的訪問時間戳,肯定的說,我們的訪問是有‘index.html.gz’檔案提供的。
下面將對index.html檔案進行修改:
[root@mfsmaster html]# vi index.html
|
檢視檔案的訪問時間
[root@mfsmaster html]# stat index.* File: ‘index.html’ Size: 183 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394671 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 18:02:40.022656216 +0800 Modify: 2011-08-18 18:02:40.022656216 +0800 Change: 2011-08-18 18:02:40.023656064 +0800 File: ‘index.html.gz’ Size: 151 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394635 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 16:59:01.040229792 +0800 Modify: 2011-08-18 16:45:20.339995192 +0800 Change: 2011-08-18 16:45:20.339995192 +0800 |
再次訪問該網頁:
得到的頁面和原來的一樣,我們再次檢視檔案的訪問時間戳(如果你也是在做測試,那麼你需要將IE瀏覽器的快取清除):
[root@mfsmaster html]# stat index.* File: ‘index.html’ Size: 183 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394671 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 18:02:40.022656216 +0800 Modify: 2011-08-18 18:02:40.022656216 +0800 Change: 2011-08-18 18:02:40.023656064 +0800 File: ‘index.html.gz’ Size: 151 Blocks: 8 IO Block: 4096 一般檔案 Device: fd00h/64768d Inode: 5394635 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-18 18:09:11.569132104 +0800 Modify: 2011-08-18 16:45:20.339995192 +0800 Change: 2011-08-18 16:45:20.339995192 +0800 |
相信你一定看清楚了,是由檔案‘index.html.gz’來提供訪問的,Nginx並沒有提供最新時間的‘index.html’檔案。你要還不信,那就將檔案‘index.html.gz’刪除再訪問,網頁絕對是最新版本,在此就不再舉例了。
我們看一下,以下訪問情況:
[root@mfsmaster html]# ll 總用量 52 -rw-r--r-- 1 root root 152 8月 18 19:07 index.html -rw-r--r-- 1 root root 151 8月 18 16:45 index.html.gz.old -rw-r--r-- 1 root root 12376 8月 19 08:22 xx.html -rw-r--r-- 1 root root 4032 8月 19 12:12 xx.html.gz |
在這裡為了說明訪問情況,我們訪問http://www.xx.com/xx.html,頁面就不再擷取了,看捕獲包的情況:
看一下圖中被圈起的部分,下面是傳輸的資料包:
位元組數:1260*3+252=4032,絕對訪問的是xx.html.gz頁面!
說了這麼多,其實我們要明白的是壓縮傳輸的好處,絕對的節省頻寬,我們再算一下,看下面的算式:
(12376-4032)/12376=67.42%
(12376-4324)/12376=65.06%
因此,我們得出的結論是:頁面壓縮傳輸後節省了大約60%的頻寬
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-734232/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nginx HttpGzipStaticModuleNginxHTTP
- HttpGzipModule 網頁壓縮傳輸HTTP網頁
- 序列化資料傳輸壓縮
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- 探索HTTP傳輸中gzip壓縮的祕密HTTP
- 資料壓縮傳輸與斷點續傳那些事兒斷點
- windows傳輸至linux的壓縮--分包與解包WindowsLinux
- 請問:如何壓縮圖片,以在網路上傳輸??
- nginx指定埠開啟gzip壓縮Nginx
- 傳輸體積下降 85%,融雲 HTTP 壓縮演算法解析HTTP演算法
- Android 端 WebP 圖片壓縮與傳輸的一點探索AndroidWeb
- js上傳圖片壓縮JS
- Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮Nginx
- 短影片開發app,利用資料壓縮加速大檔案傳輸APP
- 前端圖片壓縮及上傳前端
- nginx快取配置及開啟gzip壓縮Nginx快取
- JAVA壓縮和解壓縮Java
- zip壓縮和解壓縮
- JS—圖片壓縮上傳(單張)JS
- [20181112]11g 日誌傳輸壓縮模式.txt模式
- linux壓縮解壓縮Linux
- 字串的壓縮和解壓縮字串
- 檔案壓縮和解壓縮
- 直播導播高畫質影片傳輸中的影片壓縮編碼原理解析
- JS壓縮方法及批量壓縮JS
- aix 下壓縮與解壓縮AI
- linux壓縮和解壓縮命令Linux
- tar 分卷壓縮&解壓縮命令
- AIX 上壓縮與解壓縮AI
- layui中實現上傳圖片壓縮UI
- tinypng upload一鍵壓縮上傳工具
- Nginx的gzip壓縮的原理和設定引數Nginx
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- 簡單的zip壓縮和解壓縮
- Linux壓縮及解壓縮命令Linux
- linux壓縮和解壓縮命令大全Linux
- Python實現壓縮和解壓縮Python