httpgzip解壓縮
Ⅰ 有個問題卡了好幾天了。 是關於VC發送request,HTTP返回GZIP數據解壓的問題。
如果您看到 .gz, .tar.gz 的文件,都是 gzip 程序壓縮的傑作。
gzip 是 GNU 組織開發的一種壓縮程序,跟 Windows 上的 ZIP 不太一樣(稍後會介紹一個一樣的)。
[root@linux~]# gzip [-cdt#] 檔名
[root@linux ~]# zcat 檔名.gz
參數:
-c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理;
-d :解壓縮的參數;
-t :可以用來檢驗一個壓縮檔的一致性~看看文件有無錯誤;
-# :壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6 ~
我們先介紹壓縮的方法。當我們有一個文件叫做 big1.bmp,由於點陣圖文件通常都很大,要用 gzip 壓縮,命令要怎麼下呢?
最簡單的可以這樣:
gzip big1.bmp
但是如果您希望它壓出「最小的文件」,那麼就加一個 -9 選項:
gzip -9 big1.bmp
當然,「最小的文件」的代價,就是花最久的時間壓縮,如果您希望它在最快時間壓縮好,而不計較壓縮的比例,那就相反,加一個 -1 (注意,是數字,不是小寫英文l)選項:
gzip -1 big1.bmp
而如果您沒有加 -1也沒有加 -9,它的默認相當於 -6。
另外常用的選項還有:
l -v 壓縮過程當中顯示進度。
l -r 將子目錄中的文件全部壓縮。
至於它還有解壓縮的選項,我們刻意將它挪到下一個命令中gunzip 再說明。
gunzip [-選項] [文件名.gz]
將 .gz 壓縮文件解壓
gunzip 命令與 gzip 命令相對,專門把 gzip 壓縮的 .gz 文件解壓縮。如果您有已經壓縮過的文件,例如 big1.gz,這時就可以用解壓縮:
gunzip big1.gz
這個命令也可以用 gzip 自己來完成,效果完全一樣:
gzip -d big1.gz
其實在有些版本的Linux 上,gunzip是去調用 gzip,順便幫您加上個 -d 選項罷了(用鏈接文件做的)!但是有些版本不是,是一個真的程序。不過無論 gunzip到底是一個實在的程序,還是僅是一個連接,都不重要了。因為 gzip 這個程序,本身可以負責壓縮,也可以解壓縮,一物兩用。(不見得每種壓縮和解壓縮程序都是這樣。)所以,如果您記得 -d 選項,就可以根本不用記 gunzip 這個命令了。
gunzip甚至還可以去解其他壓縮程序如 Compress 或 ZIP 壓縮出來的文件。不過我們不建議您這樣做,這樣會讓您自己很亂。而且它自己也承認,用它來解 zip 的文件並不是每一種情形都能完成。所以既然如此,何必這樣麻煩呢?哪一種工具就固定做什麼用,不是比較有條理又好記嗎?
gunzip 有幾個選項較常使用:
l -f 當解壓時如果遇到有同名的文件存在,就直接覆蓋,不必再詢問。
l -r 將子目錄中的文件全部解壓縮。
l -v 解壓縮過程當中顯示進度。
同樣,這些選項也可以再加在 gzip -d 上,效果一樣。
Ⅱ wireshare抓到http的gzip怎樣將該數據還原
伺服器給你發的是gzip類型的,把這個這實體數據解壓縮
原始數據-->被gzip=gzip數據,想要原始數據(即文本文件,能看懂的)
Ⅲ GZIP 與zip區別
一、主體不同
1、GZIP:最早由Jean-loup Gailly和Mark Adler創建,用於UNⅨ系統的文件壓縮。
2、ZIP:ZIP文件格式是一種數據壓縮和文檔儲存的文件格式。
二、特點不同
1、GZIP:基礎是DEFLATE,DEFLATE是LZ77與哈夫曼編碼的一個組合體。DEFLATE最初是作為LZW以及其它受專利保護的數據壓縮演算法的替代版本而設計的。
2、ZIP:是一種相當簡單的分別壓縮每個文件的存檔格式。分別壓縮文件允許不必讀取另外的數據而檢索獨立的文件。
三、優點不同
1、GZIP:可以減少存儲空間,通過網路傳輸文件時,可以減少傳輸的時間。
2、ZIP:支持基於對稱加密系統的一個簡單的密碼,已知有嚴重的缺陷,已知明文攻擊,字典攻擊和暴力攻擊。
Ⅳ 怎麼解壓Http請求中返回的Gzip內容
您好,我來為您解答: 你在提交請求時不要加上Accept-Encoding: gzip, deflate,這樣數據返回就不會是壓縮的。 盒子上有個lvkZLibUtils,用其中的gZipDecompress方法即可解開! 希望我的回答對你有幫助。
Ⅳ 網頁怎麼壓縮,大師們指點一下。
一.摘要
本文總結了如何為使用IIS託管的網站啟用Gzip壓縮, 從而減少網頁網路傳輸大小, 提高用戶顯示頁面的速度.
二.前言
本文的知識點是從互聯網收集整理, 主要來源於中文wiki. 使用YSlow檢測網站啟用了哪些優化時, Gzip是十分關鍵的一項. 啟動Gip壓縮將立竿見影的減少頁面的網路傳輸大小.
三.HTTP壓縮概述
HTTP 壓縮是在Web伺服器和瀏覽器間傳輸壓縮文本內容的方法。HTTP壓縮採用通用的壓縮演算法如gzip等壓縮HTML、javaScript或CSS文件。
壓縮的最大好處就是降低了網路傳輸的數據量,從而提高客戶端瀏覽器的訪問速度。
當然,同時也會增加一點點伺服器的負擔。Gzip是比較常見的一種HTTP 壓縮演算法。
四.HTTP壓縮工作原理
Web伺服器處理HTTP壓縮的工作原理如下:
1.Web
伺服器接收到瀏覽器的HTTP請求後,檢查瀏覽器是否支持HTTP壓縮;
在用戶瀏覽器發送請求的HTTP頭中, 帶有"Accept-Encoding: gzip, deflate"參數則表明支持gzip和deflate兩種壓縮演算法.
2.如果瀏覽器支持HTTP壓縮,Web伺服器檢查請求文件的後綴名;靜態文件和動態文件後綴啟動要所都需要在MetaBase.xml中設置.
靜態文件需要設置:
HcFileExtensions Metabase Property
(單擊跳轉到MSDN說明) 動態文件需要設置: HcScriptFileExtensions Metabase Property (單擊跳轉到MSDN說明)
3.如果請求文件是HTML、CSS等靜態文件並且文件後綴啟用了壓縮,則Web伺服器到壓縮緩沖目錄中檢查是否已經存在請求文件的最新壓縮文件;
4.如果請求文件的壓縮文件不存在,Web伺服器向瀏覽器返回未壓縮的請求文件,並在壓縮緩沖目錄中存放請求文件的壓縮文件;
5.如果請求文件的最新壓縮文件已經存在,則直接返回請求文件的壓縮文件;
6.如果請求文件是ASPX等動態文件並且文件後綴啟用了壓縮,Web伺服器動態壓縮內容並返回瀏覽器,壓縮內容不存放到壓縮緩存目錄中。
五. 在IIS中啟用HTTP壓縮
IIS默認並不支持HTTP壓縮,需要進行簡單的配置
1.打開Internet信息服務(IIS)管理器,右擊"網站"->"屬性"選擇"服務"。在"HTTP壓縮"框中選中"壓縮應用程序文件"和"壓縮靜態文件",按需要設置"臨時目錄"和"臨時目錄的最大限制";
2.提醒: 經試驗此步驟在本人機器上沒有作用, 可以忽略. 在 Internet信息服務(IIS)管理器,右擊"Web服務擴展"->"增加一個新的Web服務擴展...",在"新建Web服務擴展"框中輸入擴名"HTTP Compression",添加"要求的文件"為C:WINDOWSsystem32inetsrvgzip.dll,其中Windows系統目錄根據您的安裝可能有所不同,選中"設置擴展狀態為允許";
3.使用文本編輯器打開C:.xml(建議先備份), 找到Location ="/LM/W3SVC/Filters/Compression/gzip用於設置gzip壓縮,找到Location ="/LM/W3SVC/Filters/Compression/deflate"用於設置deflate壓縮. 上面兩個節點緊挨著.並且設置的屬性相同.
如果需要壓縮動態文件,則將HcDoDynamicCompression設置為"TRUE",並在HcScriptFileExtensions中增加您要壓縮的動態文件後綴名,如aspx;如果需要壓縮靜態文件,則將HcDoStaticCompression和 HcDoOnDemandCompression設置為"TRUE",並在HcFileExtensions中增加您需要壓縮的靜態文件後綴名,如 xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數值在0-10, 默認為0. HcDynamicCompressionLevel屬性說明:
HcDynamicCompressionLevel Metabase PropertyHcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property說明: 這兩個屬性值一般推薦設置為
9, 具有最佳性價比.但是在我的window server 2003上, 壓縮率無論如何設置, jQuery和jQuery
UI兩個文件(58k/188k)壓縮後的大小一直相同.(20k/45k). 下面是我的實例: Xml代碼
1.<IIsCompressionSchemeLocation="/LM/W3SVC/Filters/Compression/deflate"
2.HcCompressionDll="%windir%system32inetsrvgzip.dll"
3.HcCreateFlags="0"
4.HcDoDynamicCompression="TRUE"
5.HcDoOnDemandCompression="TRUE"
6.HcDoStaticCompression="true"
7.HcDynamicCompressionLevel="9"
8.HcFileExtensions="htm
9. html
10. txt
11. js
12. css
13. swf
14. xml"
15.
HcOnDemandCompLevel="9"
16. HcPriority="1"
17. HcScriptFileExtensions="asp
18. aspx
19. dll
20. exe"
21. >
22.</IIsCompressionScheme>
23.<IIsCompressionSchemeLocation="/LM/W3SVC/Filters/Compression/gzip"
24. HcCompressionDll="%windir%system32inetsrvgzip.dll"
25. HcCreateFlags="1"
26. HcDoDynamicCompression="TRUE"
27. HcDoOnDemandCompression="TRUE"
28. HcDoStaticCompression="true"
29. HcDynamicCompressionLevel="9"
30. HcFileExtensions="htm
31. html
32. txt
33. js
34. css
35. swf
36. xml"
37. HcOnDemandCompLevel="9"
38. HcPriority="1"
39.
HcScriptFileExtensions
="asp
40. aspx
41. dll
42. exe"
43. >
44.</IIsCompressionScheme>
.csharpcode, .csharpcode pre { font-size: small; color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre
{ margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd
{
color:
#0000ff;
}
.csharpcode
.str
{
color:
#006080;
}
.csharpcode
.op
{ color: #0000c0; } .csharpcode .preproc { color:
#cc6633; } .csharpcode .asp { background-color:
#ffff00;
}
.csharpcode
.html
{
color:
#800000;
}
.csharpcode
.attr
{
color:
#ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%;
margin: 0em; } .csharpcode .lnum { color: #606060; }
4.編輯完畢後保存MetaBase.xml文件;如果文件無法保存,則可能IIS正在使用該文件。打開"開始"->"管理工具"->"服務",停止"IIS Admin Service"後,即可保存
5.最後,重新啟動IIS。可以到HTTP壓縮測試網站驗證結果.以jQuery為例, 核心類庫和UI類庫原始大小分別是57k和188k,壓縮後分別是20k和45k:
我們通過Http頭中的: Content-Encoding:gzip 屬性判斷返回後的數據已經啟用了gzip壓縮:
使用YSlow檢測, 當只啟動靜態文件壓縮時:
Gzip壓縮評級為B:
當同時啟動了動態文件壓縮時, Gzip壓縮評級為A:
Ⅵ 瀏覽器是如何判定http返回內容是否需要gzip解壓縮的
伺服器返回的headers裡面有表明 是否使用了壓縮
Ⅶ java端用GZIPOutputStream壓縮的數據,通過HTTP POST到PHP寫的後台,怎麼不能解壓
GZIPOutputStream和PHP的gzuncompress配合得不好,似乎是Java產生的數據頭在PHP那邊認不出來。用DeflaterOutputStream來取代GZIPOutputStream。
Ⅷ 請問後綴為gzip的文件如何打開
GZIP最早由Jean-loup Gailly和Mark Adler創建,用於UNIX系統的文件壓縮。我們在Linux中經常會用到後綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。
gzip 命令
減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網路傳輸文件時,可以減少傳輸的時間。gzip 是在 Linux 系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。
語法:gzip [選項] 壓縮(解壓縮)的文件名
該命令的各選項含義如下:
-c 將輸出寫到標准輸出上,並保留原有文件。
-d 將壓縮文件解壓。
-l 對每個壓縮文件,顯示下列欄位:
壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名字
-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮。
-t 測試,檢查壓縮文件是否完整。
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比。
-num 用指定的數字 num 調整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),
-9 或--best表示最慢壓縮方法(高壓縮比)。系統預設值為 6。
指令實例:
gzip *
% 把當前目錄下的每個文件壓縮成 .gz 文件。
gzip -dv *
% 把當前目錄下每個壓縮的文件解壓,並列出詳細的信息。
gzip -l *
% 詳細顯示例1中每個壓縮的文件的信息,並不解壓。
gzip usr.tar
% 壓縮 tar 備份文件 usr.tar,此時壓縮文件的擴展名為.tar.gz。
Ⅸ 如何解決http封包中gzip編碼的html
如何解決http封包中gzip編碼的html
大家都知道,在默認模式下,http協議中發送的網頁的Html代碼是經過gzip編碼後傳送的。那麼我們怎麼才能回復這段編碼後的html呢?
大家可能都知道linux下有一個gzip命令。可以把文件壓縮成gzip編碼的格式,即*.gz
而對於文件的壓縮和解壓縮,可以採用zlib庫中提供的各種介面來進行操作。但是這里問題來了。關於gzip編碼的那些函數都帶有gz開頭的標示。而這些介面維護了一個名叫gz_stream的結構體。並且是針對文件FILE*操作的。
而我們要解決的問題是,我們把截取的封包中的gzip編碼的內容拿出來,放到一個buffer中。那麼怎麼才能針對這個buffer中的數據應用這些介面呢?
我本來的想法是能不能在這些介面中找到專門對內存中的數據進行解碼?
考慮這個問題,我看了這個庫的源代碼。後來放棄了。至於放棄的原因,可能是我意志力不夠,或者不想看那些源代碼了。總之,我看了一天,看的我頭疼。
後來我就想個辦法繞開這一思路,走個彎路。問題豁然開朗。
思路如下:
1. 把獲取到的經過編碼的數據保存到一個文件中。注意寫文件的時候一定要以二進制方式。否則是不能解碼的。
2. 應用zlib中的介面,gzopen(),gzread(),gzclose()即可完成解碼的任務了。