在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法
為了優(yōu)化網(wǎng)站的訪問速度,我們可以通過對靜態(tài)內(nèi)容進行壓縮,從而減少網(wǎng)頁加載的時間,大大節(jié)省用戶的帶寬。在這篇文章中,我將介紹如何使用Apache和.htaccess文件進行靜態(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模塊。要啟用這個模塊,你只需要從httpd.conf文件去掉這個模塊行。
啟用這個模塊后,你的服務(wù)器準備好提供壓縮的內(nèi)容。但是,服務(wù)器只有當(dāng)它接收到來自客戶端的相應(yīng)頭文件時,才會創(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)站的請求頭部。你可以看到一個額外的頭“Accept-Encoding“。這意味著請求的客戶端能夠處理給定的壓縮類型的內(nèi)容,并將提供壓縮內(nèi)容。
Accept-Encoding:gzip,deflate,sdch
結(jié)果
看看下面的圖片,有多少被壓縮了。
從上面的圖片可以看出,實際頁面大小707KB,使用壓縮后是401KB。因此,它最終會提高你的網(wǎng)站的性能。
我強烈建議你把網(wǎng)站靜態(tài)內(nèi)容做壓縮處理,因為沒有理由不這么做,這是Web開發(fā)的一個最佳實踐。
然后附上Gzip的一些基本的常用命令:
1.命令格式:
gzip[參數(shù)][文件或者目錄]
2.命令功能:
gzip是個使用廣泛的壓縮程序,文件經(jīng)它壓縮過后,其名稱后面會多出".gz"的擴展名。
3.命令參數(shù):
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把壓縮后的文件輸出到標準輸出設(shè)備,不去更動原始文件。
-d或--decompress或----uncompress 解開壓縮文件。
-f或--force 強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接。
-h或--help 在線幫助。
-l或--list 列出壓縮文件的相關(guān)信息。
-L或--license 顯示版本與版權(quán)信息。
-n或--no-name 壓縮文件時,不保存原來的文件名稱及時間戳記。
-N或--name 壓縮文件時,保存原來的文件名稱及時間戳記。
-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文件管理命令實例分析【權(quán)限、創(chuàng)建、刪除、復(fù)制、移動、搜索等】
這篇文章主要介紹了linux文件管理命令,結(jié)合實例形式分析Linux文件與目錄的權(quán)限控制、創(chuàng)建、刪除、復(fù)制、移動、搜索等相關(guān)操作技巧,需要的朋友可以參考下2020-03-03Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法
這篇文章主要介紹了Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04阿里云OSS訪問權(quán)限配置(RAM權(quán)限控制)實現(xiàn)
這篇文章主要介紹了阿里云OSS訪問權(quán)限配置(RAM權(quán)限控制)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Apache中利用mod_rewrite實現(xiàn)防盜鏈
自從上次在博客中推薦《you are my everything》以后,服務(wù)器的流量突然多了起來,有幾次甚至導(dǎo)致了VPS的當(dāng)機。后來經(jīng)過分析:盜鏈這個MP3的網(wǎng)頁包括諸如QQ空間、校內(nèi)網(wǎng)空間、更有甚者還放到了Taobao小店、個人博客也有不少,全部作為了背景音樂,并且導(dǎo)致各種爬蟲瘋狂抓取這個文件。找到了問題原因就只有一個辦法了,就是利用Apache的mod_rewrite模塊把盜鏈行為拒之門外。2008-04-04