web gzip 測試網站 1、什麼是gzip gzip是一種數據格式,默許且今朝僅使用deflate算法壓縮data部門; Gzip是一種風行的文件緊縮算法,目下當今的應用十分普遍,特別是在Linux平台。當利用Gzip緊縮到一個純文本文件時,效果是非常明顯的,大約可以削減70%以上的文件巨細。這取決於文件中的內容。 利用Apache中的Gzip模塊,我們可使用Gzip壓縮算法來對Apache服務器發布的網頁內容進行壓縮後再傳輸到客戶端瀏覽器。如許經由緊縮後實際上降低了網絡傳輸的字節數,最顯著的益處就是可以加速網頁加載的速度。 網頁加載速度加速的優點不言而喻,除節約流量,改良用戶的瀏覽體驗外,另外一個潛伏的好處是Gzip與搜刮引擎的抓取對象有著更好的關係。例如Google就可以經由過程直接讀取gzip文件來比通俗手工抓取更快地檢索網頁。在Google網站管理員東西(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作為Sitemap被提交的。 而這些優點並不僅僅限於靜態內容,PHP動態頁面和其他動態生成的內容均可以經由過程利用Apache壓縮模塊緊縮,加上其他的機能調整機制和響應的辦事器端緩存規則,這可以大大提高網站的機能。是以,對於部署在Linux辦事器上的PHP法式,在辦事器支撐的情況下,我們建議你開啟使用Gzip Web緊縮。 PS:詳情參考:http://baike.baidu.com/item/gzip?fr=aladdin 2、什麼是deflate DEFLATE是同時利用了LZ77算法與哈夫曼編碼(Huffman Coding)的一個無損數據緊縮算法。 它最初是由Phil Katz為他的PKZIP歸檔對象第二版所界說的,後來定義在RFC 1951規範中。 人們遍及認為DEFLATE不受任何專利所製約,而且在LZW(GIF文件花樣利用)相幹的專利失效之前,這類格式除在ZIP文件格式中獲得運用之外也在gzip緊縮文件和PNG圖象文件中獲得了利用。 DEFLATE壓縮與解壓的源代碼可以在自由、通用的緊縮庫zlib上找到。 更高緊縮率的DEFLATE是7-zip所實現的。AdvanceCOMP也利用這類實現,它可以對gzip、PNG、MNG和ZIP文件進行緊縮從而獲得比zlib更小的文件大小。在Ken Silverman的KZIP與PNGOUT中利用了一種加倍高效同時要求更多用戶輸入的DEFLATE法式。 deflate是一種緊縮算法,是huffman編碼的一種增強。 deflate與gzip解壓的代碼幾近溝通,可以合成一塊代碼。 3、web服務器處置懲罰http緊縮的進程 1. Web辦事器領受到瀏覽器的HTTP請求後,檢查瀏覽器是不是撐持HTTP緊縮(Accept-Encoding 信息); 2. 假如瀏覽器支持HTTP壓縮,Web服務器查抄請求文件的後綴名; 3. 若是要求文件是HTML、CSS等靜態文件,Web服務器到緊縮緩衝目錄中檢查是不是已存在要求文件的最新壓縮文件; 4. 若是要求文件的壓縮文件不存在,Web服務器向瀏覽器返回未緊縮的請求文件,並在緊縮緩衝目次中寄存要求文件的緊縮文件; 5. 假如要求文件的最新壓縮文件已存在,則直接返回要求文件的壓縮文件; 6. 若是請求文件是動態文件,Web服務器動態緊縮內容並返回瀏覽器,緊縮內容不存放到緊縮緩存目次中。 下面是兩個演示圖: 未利用Gzip: ![]() ![]() 開啟使用Gzip後:
![]() 4、gzip與deflate區分 deflate使用inflateInit(),而gzip使用inflateInit2()進行初始化,比inflateInit()多一個參數: -MAX_WBITS,表示處置raw deflate數據。因為gzip數據中的zlib緊縮數據塊沒有zlib header的兩個字節。使用inflateInit2時要求zlib庫忽略zlib header。在zlib手冊中要求windowBits為8..15,可是現實上其它規模的數據有特別作用,見zlib.h中的註釋,如負數默示raw deflate。 Apache的deflate變種可能也沒有zlib header,需要添加假頭後處置懲罰。即MS的錯誤deflate (raw deflate).zlib頭第1字節通常爲0x78, 第2字節與第一字節合起來的雙字節應能被31整除,詳見rfc1950。例如Firefox的zlib假頭為0x7801,python zlib.compress()結果頭部為0x789c。 deflate 是最根本的算法,gzip 在deflate 的raw data 前增加了10 個字節的gzheader,尾部添加了8 個字節的校驗字節(可選crc32 和adler32) 和長度標識字節。 安裝它們的Apache Web辦事器版本的差異。Apache 1.x系列沒有內建網頁緊縮手藝,所以才去用額外的第三方mod_gzip 模塊來履行壓縮。而Apache 2.x官方在開發的時辰,就把網頁緊縮考慮進去,內建了mod_deflate 這個模塊,用以取代mod_gzip。雖然兩者都是利用的Gzip壓縮算法,它們的運作原理是類似的。 緊縮質量。mod_deflate 緊縮速度略快而mod_gzip 的壓縮比略高。一般默認情況下,mod_gzip 會比mod_deflate 多出4%~6%的緊縮量。 對辦事器資本的佔用。一般來說mod_gzip對辦事器CPU的佔用要高一些。mod_deflate是專門為確保服務器的機能而利用的一個緊縮模塊,mod_deflate需要較少的資本來緊縮文件。這意味著在高流量的辦事器,利用mod_deflate可能會比mod_gzip加載速度更快。即在辦事器性能足夠的環境下,利用mod_gzip,雖然會花費辦事器機能,然則值得(壓縮更快更好);在服務器性能不足的環境下,使用mod_deflate 確保性能。 從Apache 2.0.45最先,mod_deflate 可以使用DeflateCompressionLevel 指令來設置緊縮級別。該指令的值可為1(緊縮速度最快,最低的壓縮質量)至9(最慢的緊縮速度,緊縮率最高)之間的整數,其默認值為6(緊縮速度和緊縮質量較為平衡的值)。這個簡單的轉變更是使得mod_deflate 可以輕鬆媲美mod_gzip 的壓縮。 5、開啟mod_gzip、mod_deflate Apache上使用Gzip壓縮算法進行緊縮的模塊有兩種:mod_gzip 和mod_deflate。要利用Gzip Web緊縮,請首先肯定你的辦事器開啟了對這兩個組件之一的撐持。在Linux辦事器上,而今已有越來越多的空間商開放了對它們的支撐,有的乃至是同時支持這兩個模塊的。例如今朝Godaddy、Bluehost及DreamHosts等空間商的服務器都已同時支撐mod_gzip 和mod_deflate。 經由過程查看HTTP頭,我們可以快速判定利用的客戶端瀏覽器是不是支持接受gzip緊縮。若發送的HTTP頭中泛起以下信息,則註解你的瀏覽器支撐接管相應的gzip緊縮: Accept-Encoding: gzip 撐持mod_gzip Accept-Encoding: deflate 支持mod_deflate Accept-Encoding: gzip,deflate 同时撐持mod_gzip 和mod_deflatemod_deflate 是apache自帶的模塊,固然是在apache 2後支撐的,之前1的時辰是mod_gzip,啟用mod_deflate可以很好的為節省網頁大小,只不過是佔用辦事器的資本和內存.用戶看到頁面的速度會大大加快。在apache2.0以上(包孕apache2.0)的版中gzip壓縮使用的是mod_deflate模塊 1.查看apache的安裝模式 發現mod_so.c,ok可以動態加模塊,不消從新編譯。 2.安裝mod_deflate PS:apxs敕令參數申明: 3、點竄Apache的http.conf文件,去除mod_deflate.so前面的註釋 在您的主機下建樹以下敘述: 或是在.htaccess檔案建立論述 如要增添檔案刻日插手代碼 5、對指定的文件配置緩存的保存時間,去除mod_headers.so模塊前面的註釋 Apache配置文件路徑是:/usr/local/apache/conf/httpd.conf
打開此文件查找如下兩行代碼:
前面沒有#符號即為正常的,若是有#符號則暗示被註釋掉了,刪除前面的#符號便可。
在Apache 設置裝備擺設文件/usr/local/apache/conf/httpd.conf 的最後添加:
註解:
6、在根目錄中新建.htaccess文件,定制壓縮規則IfModule deflate_module是判斷若是deflate_module模塊加載的話,履行里面的設置裝備擺設。 SetOutputFilter DEFLATE是設置輸出為deflate壓縮算法。 SetEnvIfNoCase Request_URI是清掃一些常見的圖片,影音,文檔等類型的後綴,不緊縮。 AddOutputFilterByType DEFLATE是對常見的文本類型,如html,txt,xml,css,js做緊縮處置懲罰。 裡面的文件MIME類型可以根據本身環境添加,至於PDF 、圖片、音樂文檔之類的這些自己都已高度緊縮格局,反複緊縮的感化不大,反而可能會因為增添CPU的處置懲罰時間及瀏覽器的渲染問題而下降機能。所以就沒需要再經由過程Gzip緊縮。經由過程以上設置後再查看返回的HTTP頭,泛起以下信息則表明返回的數據已經過緊縮。即網站法式所設置裝備擺設的Gzip緊縮已生效。 Content-Encoding: gzip 注:不管使用mod_gzip 仍是mod_deflate,此處返回的信息都一樣。因為它們都是實現的gzip緊縮方式。 碰到的問題和解決: 1:apach2 安裝mod_deflate後restart,直接 load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate 異常的痛苦 什麼ldd mod_deflate.so後再export LIB_LIBRARY_PATH呀,都試了N次,google也go了N天 終於在google上go出來一篇文章,終於解決,方式以下: vi /usr/local/apache2/bin/apr-config 點竄LDFLAGS=" " 為LDFLAGS="-lz" 然後再apxs -ica mod_deflate.c 就OK了. 2:apach2安裝mod_deflate後restart,直接 module deflate_module is built-in and can't be loaded ... 這說明該模塊已經安裝,沒必要再LoadModule deflate_module啟用它。 只需做<ifmodule mod_deflate.c>設置裝備擺設 參考文章 https://my.oschina.net/rasine/blog/343769 |
- Jun 20 Thu 2024 14:36
Linux 虛擬主機上處置懲罰HTTP緊縮之gzip、deflate緊縮
close
網站架設
文章標籤
全站熱搜
留言列表
發表留言