


如何對(duì)Apache做Web壓縮
目前很多企業(yè)都在網(wǎng)絡(luò)上開展業(yè)務(wù),處理的信息容量很大,有時(shí)不得不需要進(jìn)行Web壓縮。我給大家提供一個(gè)方案,不改變頁面風(fēng)格,但是減小Web瀏覽的傳輸數(shù)據(jù)量。
我的Web服務(wù)器是Apache,采用的壓縮工具是免費(fèi)軟件mod_gzip,通過流量測試軟件BWMeter來證實(shí)壓縮比例。用mod_gzip壓縮純文本內(nèi)容平均可壓縮至原大小的40%以下,從而可節(jié)約60%以上的數(shù)據(jù)傳輸。雖然數(shù)據(jù)壓縮會(huì)導(dǎo)致Web服務(wù)器的CPU占用率略微上升,但是可以節(jié)約大量網(wǎng)絡(luò)I/O,提升用戶瀏覽速度。我將一個(gè)大小為8KB的HTML文本從未經(jīng)過壓縮的10.4KB流量(如圖1),壓縮變成了5.9KB的流量(如圖2)。
mod_gzip的工作原理
mod_gzip的工作原理是,當(dāng)客戶端請(qǐng)求瀏覽某網(wǎng)頁后,Apache服務(wù)器將所請(qǐng)求的網(wǎng)頁文件進(jìn)行壓縮,具體壓縮是利用標(biāo)準(zhǔn)的zlib的壓縮。服務(wù)器將壓縮的文件下發(fā)給客戶端瀏覽器,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽,所以解壓效果和用戶的瀏覽器有一定關(guān)系。經(jīng)過測試,它在IE 4.0到IE 6.0上,以及Netscape 4.5到Netscape 6.0上都運(yùn)行得很好。
mod_gzip的安裝
1.下載源程序
可以從http://sourceforge.net/下載mod_gzip的源程序,使用源程序編譯生成Apache的模塊(Module)。
2.解壓源程序
tar -zxvf mod_gzip-2.0.40.tar.gz
3.編譯
進(jìn)入源程序所在的目錄進(jìn)行編譯,生成相應(yīng)的動(dòng)態(tài)鏈接庫。編譯需要指定參數(shù)APXS的相應(yīng)位置:
make APXS=/apache/httpd/bin/apxs
將mod_zip安裝到Apache服務(wù)器中,其中也要指定APXS的具體位置:
make install APXS=/apache/httpd/bin/apxs
4.調(diào)用mod_gzip模塊
在Apache的配置文件httpd.conf中增加LoadModule參數(shù),調(diào)用mod_gzip模塊。
LoadModule gzip_module modules/mod_gzip.so
5.測試
運(yùn)行以下命令測試安裝是否成功:
/apache/bin/apachectl configtest
如果出現(xiàn)“Syntax OK”,則說明Apache中已經(jīng)成功安裝上mod_gzip的壓縮模塊了。
Apache中關(guān)于mod_gzip的配置
修改Apache的配置文件httpd.conf:
1.增加mod_gzip模塊的調(diào)用
LoadModule gzip_module modules/mod_gzip.so
2.開啟壓縮功能
mod_gzip_on Yes
3.設(shè)置壓縮文件的最小值
mod_gzip_minimum_file_size 1000
4.設(shè)定壓縮文件的最大值
mod_gzip_maximum_file_size 300000
5.設(shè)定壓縮文件的臨時(shí)目錄
mod_gzip_temp_dir /tmp/mod_gzip
6.設(shè)定是否保持壓縮的工作臨時(shí)文件
mod_gzip_keep_workfiles No
7.設(shè)定各種需要壓縮的文件及擴(kuò)展名
mod_gzip_item_include file .htm$
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .php3$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
常見問題及解決方法
1.解決調(diào)用標(biāo)準(zhǔn)zlib問題
如果在編譯mod_gzip的時(shí)候沒有指定zlib類庫的具體位置,那么它默認(rèn)路徑就是/usr/local/lib,當(dāng)你的zlib不在這個(gè)目錄下面的時(shí)候,就會(huì)報(bào)如下錯(cuò)誤提示:
Cannot load /httpd/modules/mod_gzip.so
into server/httpd/modules/mod_gzip.so:
undefined symbol: top_module (或者是deflate)
解決方法就是,在編譯mod_gzip的時(shí)候,編輯Makefile文件增加兩個(gè)參數(shù),分別指向zlib的存放目錄:
INC=-I/usr/include
LIB=-lz -L/usr/lib
編輯ld.so.conf文件,在其中增加存放zlib標(biāo)準(zhǔn)類庫的具體目錄,然后運(yùn)行l(wèi)dconfig。
這樣更改以后,Apache就不會(huì)上述出現(xiàn)問題了。
2.Apache中jk2模塊有可能和mod_gzip沖突
這種現(xiàn)象會(huì)出現(xiàn)在Apache2、jk2及mod_gzip2.0.40配合的時(shí)候。最簡單的解決辦法是,改變應(yīng)用環(huán)境的版本,使用Apache1.3、jk及mod_gzip1.3配合就會(huì)避免產(chǎn)生這種沖突。
3.實(shí)現(xiàn)對(duì)servlet的壓縮
我們?cè)趆ttpd.conf文件中增加相應(yīng)的壓縮配置文件,就可以實(shí)現(xiàn)對(duì)servlet進(jìn)行壓縮了。
mod_gzip_item_include handler jakarta-servlet
mod_gzip_item_include handler jakarta-servlet$
mod_gzip_item_include handler ^jakarta-servlet
mod_gzip_item_include handler ^jakarta-servlet$
mod_gzip_item_include handler ^^jakarta-servlet$
希望通過上述講解,讀者可以輕松地構(gòu)造壓縮的Apache服務(wù)器,更好地利用網(wǎng)絡(luò)資源。
關(guān)鍵字:Apache、網(wǎng)絡(luò)、服務(wù)器
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解