在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法
為了優(yōu)化網(wǎng)站的訪問(wèn)速度,我們可以通過(guò)對(duì)靜態(tài)內(nèi)容進(jìn)行壓縮,從而減少網(wǎng)頁(yè)加載的時(shí)間,大大節(jié)省用戶的帶寬。在這篇文章中,我將介紹如何使用Apache和.htaccess文件進(jìn)行靜態(tài)內(nèi)容壓縮。
首先讓我介紹一下,我們可以使用兩種不同的方法壓縮內(nèi)容:GZip 和 deflate。
介紹
GZip方法在早期的apache版本中使用(在Apache 1.3之前)。但在那之后apache引入了deflate方法,相比GZip并沒(méi)有太大的效果(但仍是非常好的)。然而,GZip在apache 1.3之后不再提供更多的支持。因此,你的Apache版本必須大于1.3,如果沒(méi)有,你必須升級(jí)到最新版本的Apache。
在使用壓縮之前,你必須啟用apache的mod_deflate模塊。要啟用這個(gè)模塊,你只需要從httpd.conf文件去掉這個(gè)模塊行。
啟用這個(gè)模塊后,你的服務(wù)器準(zhǔn)備好提供壓縮的內(nèi)容。但是,服務(wù)器只有當(dāng)它接收到來(lái)自客戶端的相應(yīng)頭文件時(shí),才會(huì)創(chuàng)建壓縮內(nèi)容。所以,現(xiàn)在你需要將下面的代碼放置到你網(wǎng)站的htaccess文件,才能通知服務(wù)器提供壓縮的內(nèi)容。
.HTACCESS代碼
<ifmodule mod_deflate.c="">
# force deflate for mangled headers
# developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<ifmodule mod_setenvif.c="">
<ifmodule mod_headers.c="">
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</ifmodule>
</ifmodule>
# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
<ifmodule filter_module="">
FilterDeclare COMPRESS
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject
FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf
FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype
FilterChain COMPRESS
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
</ifmodule>
<ifmodule !mod_filter.c="">
# Legacy versions of Apache
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE image/svg+xml application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font-ttf font/opentype
</ifmodule>
</ifmodule>
將上面的代碼放置在你的htaccess文件之后,看看你網(wǎng)站的請(qǐng)求頭部。你可以看到一個(gè)額外的頭“Accept-Encoding“。這意味著請(qǐng)求的客戶端能夠處理給定的壓縮類型的內(nèi)容,并將提供壓縮內(nèi)容。
Accept-Encoding:gzip,deflate,sdch
結(jié)果
看看下面的圖片,有多少被壓縮了。

從上面的圖片可以看出,實(shí)際頁(yè)面大小707KB,使用壓縮后是401KB。因此,它最終會(huì)提高你的網(wǎng)站的性能。
我強(qiáng)烈建議你把網(wǎng)站靜態(tài)內(nèi)容做壓縮處理,因?yàn)闆](méi)有理由不這么做,這是Web開(kāi)發(fā)的一個(gè)最佳實(shí)踐。
然后附上Gzip的一些基本的常用命令:
1.命令格式:
gzip[參數(shù)][文件或者目錄](méi)
2.命令功能:
gzip是個(gè)使用廣泛的壓縮程序,文件經(jīng)它壓縮過(guò)后,其名稱后面會(huì)多出".gz"的擴(kuò)展名。
3.命令參數(shù):
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把壓縮后的文件輸出到標(biāo)準(zhǔn)輸出設(shè)備,不去更動(dòng)原始文件。
-d或--decompress或----uncompress 解開(kāi)壓縮文件。
-f或--force 強(qiáng)行壓縮文件。不理會(huì)文件名稱或硬連接是否存在以及該文件是否為符號(hào)連接。
-h或--help 在線幫助。
-l或--list 列出壓縮文件的相關(guān)信息。
-L或--license 顯示版本與版權(quán)信息。
-n或--no-name 壓縮文件時(shí),不保存原來(lái)的文件名稱及時(shí)間戳記。
-N或--name 壓縮文件時(shí),保存原來(lái)的文件名稱及時(shí)間戳記。
-q或--quiet 不顯示警告信息。
-r或--recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-S<壓縮字尾字符串>或----suffix<壓縮字尾字符串> 更改壓縮字尾字符串。
-t或--test 測(cè)試壓縮文件是否正確無(wú)誤。
-v或--verbose 顯示指令執(zhí)行過(guò)程。
-V或--version 顯示版本信息。
-num 用指定的數(shù)字num調(diào)整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統(tǒng)缺省值為6。
相關(guān)文章
Linux給普通用戶加超級(jí)用戶權(quán)限的方法
這篇文章主要介紹了Linux中讓普通用戶擁有超級(jí)用戶的權(quán)限,這樣就不用使用SUDO命令了,需要的朋友要以試一下2013-11-11
基于Linux搭建Apache網(wǎng)站服務(wù)配置詳解
這篇文章主要介紹了基于Linux搭建Apache網(wǎng)站服務(wù)配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
linux服務(wù)器安裝PHP擴(kuò)展zip,zlib方法
下面小編就為大家分享一篇linux服務(wù)器安裝PHP擴(kuò)展zip,zlib方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Linux 用cp和rsync同步文件時(shí)跳過(guò)指定目錄的方法
某測(cè)試站點(diǎn),在某個(gè)節(jié)點(diǎn)的時(shí)候需要同步到正式站點(diǎn)去,但是里面的config目錄不能覆蓋2012-11-11
Linux中crontab定時(shí)任務(wù)不執(zhí)行的原因
本篇文章主要介紹了Linux中crontab定時(shí)任務(wù)不執(zhí)行的原因,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
xshell 遠(yuǎn)程登陸CentOS7 免密登陸的思路詳解
這篇文章主要介紹了xshell 遠(yuǎn)程登陸CentOS7 免密登陸的思路,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
Ubuntu Server 18.04.5 LTS服務(wù)器版安裝配置圖解教程
Ubuntu分為桌面版(desktop)和服務(wù)器版(Server),下面為大家介紹服務(wù)器版本Ubuntu Server 18.04.5 LTS的詳細(xì)安裝過(guò)程,需要的朋友可以參考下2021-01-01

