在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法
為了優(yōu)化網(wǎng)站的訪問速度,我們可以通過對靜態(tài)內(nèi)容進(jìn)行壓縮,從而減少網(wǎng)頁加載的時(shí)間,大大節(jié)省用戶的帶寬。在這篇文章中,我將介紹如何使用Apache和.htaccess文件進(jìn)行靜態(tài)內(nèi)容壓縮。
首先讓我介紹一下,我們可以使用兩種不同的方法壓縮內(nèi)容:GZip 和 deflate。
介紹
GZip方法在早期的apache版本中使用(在Apache 1.3之前)。但在那之后apache引入了deflate方法,相比GZip并沒有太大的效果(但仍是非常好的)。然而,GZip在apache 1.3之后不再提供更多的支持。因此,你的Apache版本必須大于1.3,如果沒有,你必須升級到最新版本的Apache。
在使用壓縮之前,你必須啟用apache的mod_deflate模塊。要啟用這個(gè)模塊,你只需要從httpd.conf文件去掉這個(gè)模塊行。
啟用這個(gè)模塊后,你的服務(wù)器準(zhǔn)備好提供壓縮的內(nèi)容。但是,服務(wù)器只有當(dāng)它接收到來自客戶端的相應(yīng)頭文件時(shí),才會創(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)站的請求頭部。你可以看到一個(gè)額外的頭“Accept-Encoding“。這意味著請求的客戶端能夠處理給定的壓縮類型的內(nèi)容,并將提供壓縮內(nèi)容。
Accept-Encoding:gzip,deflate,sdch
結(jié)果
看看下面的圖片,有多少被壓縮了。
從上面的圖片可以看出,實(shí)際頁面大小707KB,使用壓縮后是401KB。因此,它最終會提高你的網(wǎng)站的性能。
我強(qiáng)烈建議你把網(wǎng)站靜態(tài)內(nèi)容做壓縮處理,因?yàn)闆]有理由不這么做,這是Web開發(fā)的一個(gè)最佳實(shí)踐。
然后附上Gzip的一些基本的常用命令:
1.命令格式:
gzip[參數(shù)][文件或者目錄]
2.命令功能:
gzip是個(gè)使用廣泛的壓縮程序,文件經(jīng)它壓縮過后,其名稱后面會多出".gz"的擴(kuò)展名。
3.命令參數(shù):
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把壓縮后的文件輸出到標(biāo)準(zhǔn)輸出設(shè)備,不去更動(dòng)原始文件。
-d或--decompress或----uncompress 解開壓縮文件。
-f或--force 強(qiáng)行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接。
-h或--help 在線幫助。
-l或--list 列出壓縮文件的相關(guān)信息。
-L或--license 顯示版本與版權(quán)信息。
-n或--no-name 壓縮文件時(shí),不保存原來的文件名稱及時(shí)間戳記。
-N或--name 壓縮文件時(shí),保存原來的文件名稱及時(shí)間戳記。
-q或--quiet 不顯示警告信息。
-r或--recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-S<壓縮字尾字符串>或----suffix<壓縮字尾字符串> 更改壓縮字尾字符串。
-t或--test 測試壓縮文件是否正確無誤。
-v或--verbose 顯示指令執(zhí)行過程。
-V或--version 顯示版本信息。
-num 用指定的數(shù)字num調(diào)整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統(tǒng)缺省值為6。
相關(guān)文章
Linux上創(chuàng)建、列出、刪除Docker容器方法總結(jié)
在本篇文章中小編給大家整理了一篇關(guān)于Linux上創(chuàng)建、列出、刪除Docker容器方法和技巧,需要的朋友們學(xué)習(xí)參考下。2019-03-03linux服務(wù)器安裝PHP擴(kuò)展zip,zlib方法
下面小編就為大家分享一篇linux服務(wù)器安裝PHP擴(kuò)展zip,zlib方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03linux文件管理命令實(shí)例分析【權(quán)限、創(chuàng)建、刪除、復(fù)制、移動(dòng)、搜索等】
這篇文章主要介紹了linux文件管理命令,結(jié)合實(shí)例形式分析Linux文件與目錄的權(quán)限控制、創(chuàng)建、刪除、復(fù)制、移動(dòng)、搜索等相關(guān)操作技巧,需要的朋友可以參考下2020-03-03Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法
這篇文章主要介紹了Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04VMware虛擬機(jī)安裝Linux系統(tǒng)圖文教程
這篇文章主要為大家詳細(xì)介紹了VMware虛擬機(jī)安裝Linux系統(tǒng)教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10centos7云主機(jī)系統(tǒng)下掛載磁盤的方法
本篇文章主要介紹了centos7云主機(jī)系統(tǒng)下掛載磁盤的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Apache Shiro 使用手冊(二) Shiro 認(rèn)證
認(rèn)證就是驗(yàn)證用戶身份的過程。在認(rèn)證過程中,用戶需要提交實(shí)體信息(Principals)和憑據(jù)信息(Credentials)以檢驗(yàn)用戶是否合法。最常見的“實(shí)體/憑證”組合便是“用戶名/密碼”組合2014-06-06阿里云OSS訪問權(quán)限配置(RAM權(quán)限控制)實(shí)現(xiàn)
這篇文章主要介紹了阿里云OSS訪問權(quán)限配置(RAM權(quán)限控制)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Apache中利用mod_rewrite實(shí)現(xiàn)防盜鏈
自從上次在博客中推薦《you are my everything》以后,服務(wù)器的流量突然多了起來,有幾次甚至導(dǎo)致了VPS的當(dāng)機(jī)。后來經(jīng)過分析:盜鏈這個(gè)MP3的網(wǎng)頁包括諸如QQ空間、校內(nèi)網(wǎng)空間、更有甚者還放到了Taobao小店、個(gè)人博客也有不少,全部作為了背景音樂,并且導(dǎo)致各種爬蟲瘋狂抓取這個(gè)文件。找到了問題原因就只有一個(gè)辦法了,就是利用Apache的mod_rewrite模塊把盜鏈行為拒之門外。2008-04-04