安裝
設置
雖然現在已是寬頻時代了,但是『魔電』族依然大有人在,因此如何讓您的網頁內容能快速的於訪客瀏灠器中呈現,是本章節所要探討的。
要讓網頁內容能快速的於訪客瀏灠器中呈現,除了頻寬這較不客觀的條件外,另外一個較客觀的條件便是減少網頁內容量。
或者您會奇怪︰我要顯示的內容就是這些,如果減化了網頁內容的話,那豈不是可能會變得四不像,內容的可讀性就大減了??
其實這兒所提的減少網頁內容量,並非要您去減化網頁內容,而是減化網頁的標籤語法,也就是我們常看到的網頁優化。
相信您一定知道,在一個檔案中,每一個英文字母、半形符號就需要佔用 1 byte 的大小。而在網頁標籤中,有許多結尾標籤是可以省略掉的,比如︰</td>、</p>........
另外像連結位址,有些頁面的連結是可以使用相對路徑來指定的,但是如果採用絕對路徑的話,則相對的該網頁的容量大小便無形中又增大了許多。假設我們在編寫網頁內容時,能夠將這些細節注意到的話,則原本需要 6 kbyte 的網頁容量,很可能就可以節省到 5 kbyte 甚至不到 5 kbyte。
要加快網頁的傳輸速度,除了優化網頁內容量降低所需傳輸容量外,您還可以多加上傳輸壓縮功能,來讓您的網頁在傳輸之前能夠再經過一道壓縮手續,以求傳輸容量的再降低。它的運作模式如下︰
file.html (60kbyte) -> 經過壓縮 -> file.html (24kbyte) -> 透過 Internet -> file.html (24kbyte) -> Browser
試想,如果未採用傳輸壓縮功能的話,則原本 60 kbyte 的檔案,在 56 kbite 的『魔電』族要來瀏灠的話,則約需要 10 秒鐘的時間,可是若是經過壓縮的話,則只需要約 4 秒鐘的時間。
如果以現在流行的寬頻架網的情況來看,一般個人網站的上傳頻寬大都只為 64 kbite,如果未使用傳輸壓縮功能的話,則使用者 (不分寬頻或魔電族) 要下載 60 kbyte 的檔案,需要約 10 秒鐘的時間,但若是經過壓縮的話,則只需要約 4 秒鐘的時間。或許您會覺得只差個 6 秒而已沒什麼,試想一下,如果同時有兩個人甚至兩個人以上同時瀏灠呢??
不再癈話一堆了,底下我們就來看看要如何讓 Apache 能夠添加上這有如神助的傳輸壓縮功能吧!!
mod_gzip 是免費提供的一個 Apache 模組,它可以把無論動態還是靜態的內容,在伺服端進行即時壓縮並傳輸,而不需要在客戶端安裝任何東西。您只需在依照如下步驟即可馬上為您的 Apache 灌注魔力︰
shell# cd /usr/ports/www/mod_gzip
shell# make install clean
不過呢,因為現行 mod_gzip 的版本是 1.3.26.1a,而在咱們偉大的 ports-tree 中還是 1.3.19.2a 的版本,因此我們需要調校一下 /usr/ports/www/mod_gzip/Makefile 與 /usr/ports/www/mod_gzip/distinfo 的內容。
首先,請先下載 mod_gzip-1.3.26.1a.tgz 檔案回來,然後執行如下指令,以取得該檔案的檢查碼︰
shell#md5 /path/mod_gzip-1.3.26.1a.tgz
然後您會看到如下的內容訊息,請將紅色字樣的號碼給記下來︰
MD5 (/path/mod_gzip-1.3.26.1a.tgz) = 080ccc5d789ed5efa0c0a7625e4fa02d
再來,我們先編輯 /usr/ports/www/mod_gzip/distinfo 檔案的內容︰
將原始內容︰
MD5 (mod_gzip-1.3.19.2a.tgz) = a0f2247455953a961fe4dfc2e0beda50
改為如下內容︰
MD5 (mod_gzip-1.3.26.1a.tgz) = 080ccc5d789ed5efa0c0a7625e4fa02d
接下來編輯 /usr/ports/www/mod_gzip/Makefile 檔案的內容︰
找到如下行的內容︰
PORTVERSION= 1.3.19.2a
改為如下內容︰
PORTVERSION= 1.3.26.1a
然後將 /path/mod_gzip-1.3.26.1a.tgz 檔案移到 /usr/ports/distfiles 目錄下︰
shell# mv /path/mod_gzip-1.3.26.1a.tgz /usr/ports/distfiles
現在,您可以執行貫用的安裝指令來安裝最新版的 mod_gzip 模組了︰
shell# cd /usr/ports/www/mod_gzip
shell# make install
咦,怎麼少了個 clean?
看倌,您的眼尖喲 ^_^
是的,因為在 mod_gzip-1.3.26.1a.tgz 壓縮包中,有提供一個 mod_gzip 的設置範例檔以及說明手冊,而不知為啥,咱們偉大的 ports-tree 這次並未主動幫我們將範例檔與手冊安裝到適當位置,所以我們需要手動覆製一份。
請依您的喜好做適當修改︰
cd /usr/ports/www/mod_gzip/work/mod_gzip-1.3.26.1a/docs/
cp mod_gzip.conf.sample /usr/local/etc/apache/mod_gzip.conf
# 如果您需要手冊的話再執行如下指令
cp -r manual /usr/local/share/mod_gzip
再來我們需要重新設置 Apache 的配置檔 -- /usr/local/etc/apache/httpd.conf
當您安裝 mod_gzip 模組後,系統會將您原有的 httpd.conf 改名為 httpd.conf.bak,並將建立適用 mod_gzip 的 httpd.conf 設置檔,不過預設是不使用 mod_gzip 模組的,所以我們需要將該選項給打開。
請找到如下內容,並將前方的註解符號 # 給刪除︰
#LoadModule gzip_module libexec/apache/mod_gzip.so
LoadModule gzip_module libexec/apache/mod_gzip.so
#AddModule mod_gzip.c
AddModule mod_gzip.c
然後在 httpd.conf 最下邊加入如下一行設定︰
Include /usr/local/etc/apache/mod_gzip.conf
這表示將 /usr/local/etc/apache/mod_gzip.conf 檔案的內容給含括進來。
再來就是修改 mod_gzip.conf 的設置了。基本上不修改 mod_gzip.conf 的原始內容就已可以運作的很棒了,不過還是來看一下較常會修改的設定選項吧!!
- mod_gzip_temp_dir /tmp
指定臨時目錄。mod_gzip 用來存放壓縮後檔案的工作目錄所在。
- mod_gzip_keep_workfiles No
設定是否保留壓縮後的檔案。如果您的網站內容都是屬於靜態的性質,建議您可以改為 Yes,這樣可以避免反覆執行壓縮的動作,以節省 CPU 資源。
- mod_gzip_minimum_file_size 500
指定當檔案小於多少 bytes 時,不進行壓縮。預設值為 500 bytes,也就是說當檔案小於 500 bytes 時,並不進行壓縮,而是直接傳送。
- mod_gzip_maximum_file_size 500000
指定當檔案大於多少 bytes 時,不進行壓縮。預設值為 500000 bytes,也就是說當檔案大於 500000 bytes 時,也不進行壓縮,而直接傳送。
- mod_gzip_maximum_inmem_size 60000
指定使用實體記憶體來存放壓縮檔的檔案大小,單位︰bytes。當大於此設定值的檔案,將會存放於臨時目錄下。請依據您系統使用記憶體的需求來修正此設定值,一般來說預設值應該就可以了。
如果您是安裝 mod_gzip 1.3.19.x 的版本,這個設定值將會被自動限定於 60000 的大小。
- mod_gzip_min_http 1000
指定瀏灠器使用的 HTTP 協定版本。當瀏灠器使用的 HTTP 協定版本大於等於此設定值時,才會進行壓縮動作。
1000 = HTTP/1.0, 1001 = HTTP/1.1, ... 依此類推。
- mod_gzip_handle_methods GET POST
指定針對 HTTP 的何種資料串模式進行壓縮。使用預設值即可。
- LogFormat "%h %l %u %t \"%V %r\" %<s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n -< Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2
自定 Log-file 的格式與名稱。上述設定值需以一行來表示,斷行處乃因版面關係,請自行注意、處理。紅色字樣處即為此 Log-file 格式的使用指定名稱。
- CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
指定 Log-file 的存放位置以及要使用的格式名稱。如果您有使用 VirtualHost 且於其中指定 CustomLog 的話,請將此行註解。因每個 Host 只能使用一個 CustomLog 設定項。
- mod_gzip_item_exclude
mod_gzip_item_include
指定 mod_gzip 過濾器。決定何種檔案格式要進行壓縮或不壓縮。
mod_gzip_item_exclude -> 表示該檔案格式不啟用壓縮功能。
mod_gzip_item_include -> 表示該檔案格式要啟用壓縮功能。
至於詳細的設定格式,請自行參照 mod_gzip.conf 中的範例。
大致上就這些了,至於更詳盡的介紹,請查閱 mod_gzip 本身提供的手冊或到 http://www.schroepl.net/projekte/mod_gzip/ 線上查閱。
|