網頁想要速度再快,除了平時做好網頁優化之外,如果網頁輸出時可以經過壓縮,那可以讓網頁加速開啟,減少等待時間,這項功能就叫做Gzip網頁壓縮。在WordPress中雖然有外掛可以啟動Gzip網頁壓縮,不過能透過幾句語法來達到網頁壓縮,這樣不是更好嗎?其實在PHP中,有一句語法是可以開啟Gzip的,只要加在網頁輸出的前端即可。
除此之外,也可以透過.htaccess來調整系統,啟動Gzip所需的設定,讓網站達到加速的需求,若是可以啟動Gzip除了輸出時網頁比較小,接收者可以很快開啟網頁之外,也可以省一些流量的耗損,算是不錯的功能,但若是主機不支援這些設定選項,那就比較可惜了。
在WordPress中,其實大部分的快取外掛都有內建啟動Gzip壓縮功能,不論是老牌的快取外掛「WP Super Cache」、輕巧的「1 Blog Cacher」或是「hyper Cache」都可以啟動Gzip網頁壓縮功能。如果你沒有裝這些外掛,或是這些外掛雖然啟動了Gzip功能但是檢測出來卻沒有壓縮,那你可能需要透過外掛「GZippy」來啟動,不過透過這個外掛來啟動時,記得快取外掛本身的Gzip要關掉,否則可能造成衝突。
但如果你是很老手的WordPress玩家,那你一定有印象以前在後台管理中有一個是啟動網頁壓縮Gzip的設定選項,不過不知道從哪個版本開始偷偷被拿掉了,不過從資料庫內的「wp_options」資料表內看,一定還會看到一個欄位是「gzipcompression」,這就是儲存Gzip啟動的設定值,現在是空的,1表示啟動,0表示關閉,但現在就進入資料庫修改,似乎是無效了。
不過在WordPress官方的Codex上面記錄了兩種啟動Gzip壓縮的方式,一種是透過PHP函式來啟動,另一種則是透過.htaccess檔案來啟動。如果你不想要使用外掛啟動也不想使用快取外掛內建的來啟動,可以自己加入語法。
利用.htaccess啟動Gzip網頁壓縮
這方法是透過阿帕契(Apache)的「Enabling Compression」來達到。請透過FTP軟體將您的.htaccess檔案下載回來,如果沒有請用筆記本建立一個,儲存時類型請選擇所有檔案,然後檔名輸入「.htaccess」即可。在.htaccess檔案中請加入以下語法,然後儲存上傳覆蓋即可。
<IfModule mod_deflate.c> # Insert filters AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE image/svg+xml # Drop problematic browsers BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule>
透過PHP啟動Gzip網頁壓縮
另外一個方法就是透過PHP函式的方式來啟動網頁壓縮,但前提是您的系統必須有支援「Zlib Compression Functions」才有辦法啟動,您可以丟個網頁探針到伺服器上查詢看看就知道了。語法加入方式很簡單,透過FTP軟體連到WordPress根目錄,然後下載其中的「index.php」並使用筆記本軟體開啟,在「<?php」之後加入以下語法,然後上傳覆蓋即可。請注意,不是下載佈景檔案的index.php,而是WordPress主程式。修改完後請上傳覆蓋掉原本的就可以了。不過這樣的方式比較麻煩,當WordPress版本更新時,您必須重新加入語法。
ob_start('ob_gzhandler');
以上兩種方法請選擇一種使用,設定好後可以透過Gzip檢測工具檢查看看是否有成功啟動囉!不過經過測試,在zbaike或是GIDZipTest檢測時有時候結果會不太一樣?但大部分的狀況下,透過PHP的方式啟用檢測出來都有成功而透過.htaccess方式好像沒有正確的壓縮到?我目前是透過Hyper Cache快取外掛啟動Gzip,在zbaike檢測出來有壓縮,但在GIDZipTest卻是沒有壓縮,不知道他們判定的標準為何?大家可以自己試試看,以上兩種方法和小經驗提供給大家參考,也歡迎您分享經驗。
zbaike、GIDZipTest我都有檢測出來喔~~
我也是用[Hyper Cache快取外掛啟動Gzip]
(會不會是空間的問題???)
我也來回報,我也是用Hyper Cache啓動Gzip,
壓縮效果可達60幾的百分比,還不錯!
我自己目前則是改用WP super cache了 XD
想請教一下,我的網店也有設定,.htaccess去防止一些特定的垃圾IP留言。
以上的程式整個複製下來貼在IP語法後面可以嗎?
因為我的網店有時候圖片開啟很慢,想說試試這款壓縮。
http://www.rabbit-zakka.url.tw/shop/
博主你好,我看到你的这篇文章后,收益匪浅。
我想将它翻译成简体中文,然后修改部分词汇,在我的博客发布,不知道是否可以。
透過PHP來啟動Gzip壓縮會出現小問題,就是點擊某個鏈接的時候會自動下載一個***.php.gz的文件,取消后再點擊鏈接就OK了,這個該怎麼解決呢?
昨天剛從別人網站上看到gzip,但是不太明白,這下看你的就OK拉~XD
Apache的方法問題再有沒有支援IfModule mod_deflate.c
有些主機沒有支援,不然使用IfModule mod_deflate.c還可以壓縮js和css檔
,還比較方便,而使用PHP的方式好像只有對html頁面進行壓縮。只是我也是新手,碰這個才一個多月,以上是我最近查詢的心得,不知道對不對