国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關(guān)于web壓縮,gzip等

全面解析Linux空間用Gzip對網(wǎng)頁內(nèi)容進行壓縮

2010-04-28 14:28:14 來源:風(fēng)的翅膀與chibl.com 【 評論:1 我要投稿 收藏本文 分享至微博

站長交易(http://jy.chinaz.com)幫站長賺錢 虛擬主機評測+IDC導(dǎo)航=IDC123.COM

使用mod_gzip 和 mod_deflate對網(wǎng)頁內(nèi)容進行壓縮

Gzip是一種流行的文件壓縮算法,現(xiàn)在的應(yīng)用十分廣泛,尤其是在Linux平臺。當(dāng)應(yīng)用Gzip壓縮到一個純文本文件時,效果是非常明顯的,大約可以減少70%以上的文件大小。這取決于文件中的內(nèi)容。

利用Apache中的Gzip模塊,我們可以使用Gzip壓縮算法來對Apache服務(wù)器發(fā)布的網(wǎng)頁內(nèi)容進行壓縮后再傳輸?shù)娇蛻舳藶g覽器。這樣經(jīng)過壓縮后實際上降低了網(wǎng)絡(luò)傳輸?shù)淖止?jié)數(shù),最明顯的好處就是可以加快網(wǎng)頁加載的速度。

網(wǎng)頁加載速度加快的好處不言而喻,除了節(jié)省流量,改善用戶的瀏覽體驗外,另一個潛在的好處是Gzip與搜索引擎的抓取工具有著更好的關(guān)系。例如Google就可以通過直接讀取gzip文件來比普通手工抓取更快地檢索網(wǎng)頁。在Google網(wǎng)站管理員工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作為Sitemap被提交的。

而這些好處并不僅僅限于靜態(tài)內(nèi)容,PHP動態(tài)頁面和其他動態(tài)生成的內(nèi)容均可以通過使用Apache壓縮模塊壓縮,加上其他的性能調(diào)整機制和相應(yīng)的服務(wù)器端緩存規(guī)則,這可以大大提高網(wǎng)站的性能。

因此,對于部署在Linux服務(wù)器上的PHP程序,在服務(wù)器支持的情況下,我們建議你開啟使用Gzip Web壓縮。

二、 Gzip Web壓縮工作原理

Web服務(wù)器處理HTTP壓縮的過程如下:

1. Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮(Accept-Encoding 信息);

2. 如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請求文件的后綴名;

3. 如果請求文件是HTML、CSS等靜態(tài)文件,Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;

4. 如果請求文件的壓縮文件不存在,Web服務(wù)器向瀏覽器返回未壓縮的請求文件,并在壓縮緩沖目錄中存放請求文件的壓縮文件;

5. 如果請求文件的最新壓縮文件已經(jīng)存在,則直接返回請求文件的壓縮文件;

6. 如果請求文件是動態(tài)文件,Web服務(wù)器動態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。

下面是兩個演示圖:

未使用Gzip:

開啟使用Gzip后:

、讓我們開始吧!

Apache上利用Gzip壓縮算法進行壓縮的模塊有兩種:mod_gzip 和mod_deflate。要使用Gzip Web壓縮,請首先確定你的服務(wù)器開啟了對這兩個組件之一的支持。在Linux服務(wù)器上,現(xiàn)在已經(jīng)有越來越多的空間商開放了對它們的支持,有的甚至是同時支持這兩個模塊的。例如目前Godaddy、Bluehost及DreamHosts等空間商的服務(wù)器都已同時支持mod_gzip 和mod_deflate。

雖然使用Gzip同時也需要客戶端瀏覽器的支持,不過不用擔(dān)心,目前大部分瀏覽器都已經(jīng)支持Gzip了,如IE、Mozilla Firefox、Opera、Chrome等。

通過查看HTTP頭,我們可以快速判斷使用的客戶端瀏覽器是否支持接受gzip壓縮。

若發(fā)送的HTTP頭中出現(xiàn)以下信息,則表明你的瀏覽器支持接受相應(yīng)的gzip壓縮:

Accept-Encoding: gzip     支持mod_gzip
Accept-Encoding: deflate     支持mod_deflate
Accept-Encoding: gzip,deflate    同時支持mod_gzip 和mod_deflate

如果服務(wù)器開啟了對Gzip組件的支持,那么我們就可以在http.conf或.htaccess里面進行定制,下面是一個.htaccess配置的簡單實例:

以下為引用的內(nèi)容:

# mod_gzip:
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

 

以下為引用的內(nèi)容:

# mod_deflate:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6 #壓縮率, 6是建議值.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
</ifmodule>

 

里面的文件MIME類型可以根據(jù)自己情況添加,至于PDF 、圖片、音樂文檔之類的這些本身都已經(jīng)高度壓縮格式,重復(fù)壓縮的作用不大,反而可能會因為增加CPU的處理時間及瀏覽器的渲染問題而降低性能。所以就沒必要再通過Gzip壓縮。

通過以上設(shè)置后再查看返回的HTTP頭,出現(xiàn)以下信息則表明返回的數(shù)據(jù)已經(jīng)過壓縮。即網(wǎng)站程序所配置的Gzip壓縮已生效。

Content-Encoding: gzip

注:不管使用mod_gzip 還是mod_deflate,此處返回的信息都一樣。因為它們都是實現(xiàn)的gzip壓縮方式。

除此之外,還可以通過一些在線檢測工具(如:http://www.whatsmyip.org/http_compression/)來檢測你的網(wǎng)站內(nèi)容是否已經(jīng)過Gzip壓縮。

四、mod_gzip 和mod_deflate的主要區(qū)別是什么?使用哪個更好呢?

首先一個區(qū)別是安裝它們的Apache Web服務(wù)器版本的差異。Apache 1.x系列沒有內(nèi)建網(wǎng)頁壓縮技術(shù),所以才去用額外的第三方mod_gzip 模塊來執(zhí)行壓縮。而Apache 2.x官方在開發(fā)的時候,就把網(wǎng)頁壓縮考慮進去,內(nèi)建了mod_deflate 這個模塊,用以取代mod_gzip。雖然兩者都是使用的Gzip壓縮算法,它們的運作原理是類似的。

第二個區(qū)別是壓縮質(zhì)量。mod_deflate 壓縮速度略快而mod_gzip 的壓縮比略高。一般默認(rèn)情況下,mod_gzip 會比mod_deflate 多出4%~6%的壓縮量。

那么,為什么使用mod_deflate?第三個區(qū)別是對服務(wù)器資源的占用。一般來說mod_gzip 對服務(wù)器CPU的占用要高一些。mod_deflate 是專門為確保服務(wù)器的性能而使用的一個壓縮模塊,mod_deflate 需要較少的資源來壓縮文件。這意味著在高流量的服務(wù)器,使用mod_deflate 可能會比mod_gzip 加載速度更快。

不太明白?簡而言之,如果你的網(wǎng)站,每天不到1000獨立訪客,想要加快網(wǎng)頁的加載速度,就使用mod_gzip。雖然會額外耗費一些服務(wù)器資源,但也是值得的。如果你的網(wǎng)站每天超過1000獨立訪客,并且使用的是共享的虛擬主機,所分配系統(tǒng)資源有限的話,使用mod_deflate 將會是更好的選擇。

另外,從Apache 2.0.45開始,mod_deflate 可使用DeflateCompressionLevel 指令來設(shè)置壓縮級別。該指令的值可為1至(壓縮速度最快,最低的壓縮質(zhì)量)9(最慢的壓縮速度,壓縮率最高)之間的整數(shù),其默認(rèn)值為6(壓縮速度和壓縮質(zhì)量較為平衡的值)。這個簡單的變化更是使得mod_deflate 可以輕松媲美m(xù)od_gzip 的壓縮。

P.S. 對于沒有啟用以上兩種Gzip模塊的虛擬空間,還可以退而求其次使用php的zlib函數(shù)庫(同樣需要查看服務(wù)器是否支持)來壓縮文件,只是這種方法使用起來比較麻煩,而且一般會比較耗費服務(wù)器資源,請根據(jù)情況慎重使用。
 

Linux 空間不支持mod_gzip、mod_deflate模塊

Linux 空間不支持mod_gzip、mod_deflate模塊,若想通過GZIP壓縮網(wǎng)頁內(nèi)容,可以考慮兩種方式,開啟zlib.output_compression或者通過ob_gzhandler編碼的方式。

zlib.output_compression是在對網(wǎng)頁內(nèi)容壓縮的同時發(fā)送數(shù)據(jù)至客戶端,ob_gzhandler是等待網(wǎng)頁內(nèi)容壓縮完畢后才進行發(fā)送,相比之下前者效率更高,但需要注意的是,兩者不能同時使用,只能選其一,否則將出現(xiàn)錯誤。

下文僅針對GoDaddy Deluxe Hosting – Linux 空間,對兩者的實現(xiàn)方式做簡單描述。

在默認(rèn)情況下,zlib.output_compression是關(guān)閉的,如需開啟需編輯php5.ini文件,加入以下內(nèi)容:

 

以下為引用的內(nèi)容:
zlib.output_compression = On
zlib.output_compression_level = 6

 

然后將php5.ini上傳到FTP根目錄下,剩下的事請就是等待它生效,這可能需要一段時間,可以通過phpinfo()函數(shù)檢測結(jié)果:

 

以下為引用的內(nèi)容:
Directive                       Local Value   Master Value
zlib.output_compression         On            On
zlib.output_compression_level   6             6

 

當(dāng)zlib.output_compression的Local Value和MasterValue的值同為On時,表示已經(jīng)生效,這時候訪問的PHP頁面(包括偽靜態(tài)頁面)已經(jīng)GZIP壓縮了,通過Firebug或者在線網(wǎng)頁GZIP壓縮檢測工具可檢測到壓縮的效果。

如果需要使用ob_gzhandler,則需關(guān)閉zlib.output_compression,把php5.ini文件內(nèi)容更改為:

 

以下為引用的內(nèi)容:
zlib.output_compression = Off
zlib.output_compression_level = -1

 

ob_gzhandler是GoDaddy官網(wǎng)推薦的用法,通過在PHP文件中插入相關(guān)代碼實現(xiàn)GZIP壓縮,以下是GoDaddy幫助中心所提到的:

 

GZIP Compression

Smaller pages load faster, regardless of your Internet connection speed. You can make your pages smaller by compressing them with GZIP. For more information about GZIP and our hosting, see Compressing Web Pages for Faster Load Times.

 

《Compressing Web Pages for Faster Load Times》文中提到,將以下PHP代碼加入到PHP文件頂部,即可實現(xiàn)GZIP壓縮。

 

以下為引用的內(nèi)容:
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
ob_start("ob_gzhandler");
else
ob_start();
?>

 

不管是zlib.output_compression還是ob_gzhandler,都僅能對PHP文件進行GZIP壓縮,對于HTML、CSS、JS等靜態(tài)文件只能通過調(diào)用PHP的方式實現(xiàn)。

最后想說的是,現(xiàn)在主流的瀏覽器默認(rèn)使用的是HTTP1.1協(xié)議,基本都支持GZIP壓縮,對于IE而言,假如你沒有選中其菜單欄工具-》Internet 選項-》高級-》HTTP 1.1 設(shè)置-》使用 HTTP 1.1,那么,你將感受不到網(wǎng)頁壓縮后的速度提升所帶來的快感!

注明:文章mod_gzip 和mod_deflate壓縮方法的內(nèi)容來自風(fēng)的翅膀;zlib.output_compression與ob_gzhandler壓縮方法來自chibl.com

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP教程 58 - 靜態(tài)頁面優(yōu)化(1)
php啟用zlib壓縮文件的配置方法
IIS或Apache啟用GZIP壓縮優(yōu)化網(wǎng)站
zlib解壓縮gzip
HTTP請求之gzip壓縮知多少
PHP 網(wǎng)站優(yōu)化
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服