本文將說明如何利用相關程式來為Apache增加網頁優化的功能,以加快使用者瀏覽網頁時的頁面顯示時間,藉此提供更舒適的網頁瀏覽經驗。
安裝mod_expire模組
在簡單說明HTTP/1.1通訊協定對於快取的支援後,接下來就來安裝管理快取功能的mod_expire模組,由於此模組為Apache的原生模組,所以不必另外下載。
在下載Apache原始碼後(版本為2.2.31),如下所示在編譯組態上加上--enable-expires組態,即可支援mod_expire模組功能:
安裝好mod_expires模組後,繼續說明其所支援常用的組態參數,如表2所述。
表2 mod_expires模組常用的組態參數
最後,以下列簡單的例子來示範mod_expires模組的用法。在「httpd.conf」檔案內設定下列選項:
其中第三行「ExpiresByType text/html A900」的設定用意是,網站上HTML檔案的快取均預設為15分鐘,當使用者瀏覽相同的網頁之後,在15分鐘內均會使用快取內的資訊,而不會重新存取網站伺服器上的資訊。
接著重啟網站伺服器,然後利用Fidder(一種Proxy軟體)來觀察來往的HTTP封包內容。
先瀏覽某一個網頁,隨即再以重新顯示網頁(Fresh)的方式瀏覽同一個網頁,緊接著觀察Fidder所擷取到的內容,如圖1所示,上半部為使用者要求(Request)網站伺服器提供網頁的封包,下半部為網站伺服器回覆(Response)的封包內容。
|
▲圖1 重新瀏覽同一個網頁後,查看Fidder程式所擷取到的內容。 |
從中可以清楚地發現,在設定快取時間內(在此為15分鐘),如果重複存取相同的網頁時,網站伺服器就不會再重新傳送網頁內容,而是回覆HTTP狀態碼304給使用者。
這就表示來源端(Client)所要請求的網頁,在快取空間中依然是有效的,也就是說,該網頁從上次取得到現在並沒有被修改過。
因此,瀏覽器接到此狀態碼後,就會直接顯示存放在快取空間的網頁,不會再向網站伺服器存取網頁,藉此避免每次都得向網站伺服器重新請求網頁而造成網站伺服器效能下滑,並節省網路頻寬的使用。
除了利用快取的機制來增進網頁傳輸效率外,另外,也可以利用優化網頁內容(例如去除無用的網頁字元或重整重複的網頁內容)等方式來增進網頁傳輸的效率。
所以,接著介紹mod_pagespeed模組如何利用網頁內容優化的方式來提升網頁傳輸的效率。
什麼是mod_pagespeed
mod_pagespeed由Google來開發維護,是一個用以優化網頁內容,藉由修改網頁上的各種資源(例如CSS、圖檔等)來改善頻寬使用效率及縮短網頁延遲時間的模組。
它可以與Apache網站伺服器結合,為Apache網站伺服器加上優化網頁的功能,以提升網頁傳輸的效率。mod_pagespeed的主要功能如下所述:
1. 對網頁內容進行優化。例如去除無用的空白字元和註解文字等。
2. 自動壓縮CSS、js(JavaScript)等內容。例如自動合併重複的資訊來降低資料量。
3. 提供緩衝區(Buffer)功能。可將常用的頁面置於緩衝區中,來加速下載的速度。
4. 使用簡便。mod_pagespeed安裝完成後,直接啟用模組功能,即可將輸出的頁面進行優化,
在簡單說明mod_pagespeed功能後,接著就來安裝mod_pagespeed模組。
開始安裝mod_pagespeed
在此不多談如何以原始碼編譯Apache(本文所使用的版本為2.2.31),但要特別提醒的是,由於mod_pagespeed必須使用deflate(一種提供壓縮功能的模組),所以在編譯Apache時,要記得在編譯組態上加上「--enable-deflate」選項。
首先,使用以下的指令來安裝所需的相關軟體套件(#為註解符號):