Apache 網頁優化 快取 壓縮

用快取模組優化Apache 輕鬆增進網頁傳輸效率

2016-12-15
本文將說明如何利用相關程式來為Apache增加網頁優化的功能,以加快使用者瀏覽網頁時的頁面顯示時間,藉此提供更舒適的網頁瀏覽經驗。
每個網站管理者總是希望提供瀏覽者舒適快速的網頁瀏覽經驗,回想過去擔任程式設計師時,前輩總是告誡7秒法則,亦即如果網站伺服器無法在7秒內回覆使用者訊息,使用者就會因為沒有耐心而移往其他的網站。也因此,如何能夠快速地回覆網頁給使用者,往往成為網站管理者最有興趣的主題。

一般來說,要增進網頁傳輸的效率,通常會使用下列幾種方式:

1. 快取(Cache):利用快取空間來儲存常用的網頁資訊,當使用者在瀏覽網頁時,可先從快取空間中取出相關的資訊,而不必每次都必須向網站伺服器要求,藉此增進網頁傳輸的效率。

2. 壓縮:網站伺服器在送出網頁之前,先行利用壓縮的方式將網頁壓縮,藉此降低網頁傳輸量來增進網頁傳輸效率,而當使用者接收到網頁後,再進行解壓縮。目前HTTP/1.1通訊協定定義相關的壓縮功能,而大部分的瀏覽器也都支援壓縮功能。

3. 減低傳輸量:在許多網頁內容中,其實都有相關重複或不會影響網頁顯示的字元,例如空白、Tab字元,如果在送出網頁前,先行過濾相關不必要的字元來降低網頁的傳輸量,也能夠增進網頁傳輸效率。

本文將以Apache網站伺服器為例,說明如何利用相關程式來為Apache增加網頁優化的功能,增進網頁傳輸的效率,所使用的程式如表1所示。

表1 實作所需程式套件

什麼是快取(Cache)

快取(Cache)的思惟是建立在大部分的網頁存取大多會重複存取相關網頁的前提之下,如果每次都要網站伺服器重新處理,是一件相當沒有效率的事,因此可將使用者常用的網頁儲存在一個暫存的空間(在此稱為快存空間),當使用者在存取時,可先搜尋此空間,如果有符合的資訊就直接存取,無須再由網站伺服器重新提供,如此即可增進網頁存取的效率。

但是,快取也並不一定能夠增進效率,如果使用者每次都存取不同的網頁(亦即命中率Hit很低),反而會因為需要額多增加搜尋快取空間的動作,而降低效率。

由上述的說明,可以知道快取空間內的網頁資訊並不是實際的網頁資訊,所以需要一套機制用來保證快取空間內網頁資訊的正確性和即時性。在HTTP/1.1通訊協定中提供了下列的機制來盡可能地維護資料的正確性:

Expiration(過期機制)

過期機制是用來設定快取空間中資料的有效期限,超過所設定的時間就重新抓取最新的資料,HTTP/1.1提供了下列欄位來確認快取空間資料的時間資訊:

·Last-Modified:記錄快取空間中資料最後被修改的時間。

·If-Modified-Since:當瀏覽器在瀏覽網頁時,會將瀏覽器端快取頁面的最後修改時間一併傳到網站伺服器上,網站伺服器會將這個時間與伺服器上實際網頁的最後修改時間進行比較。如果網站伺服器上的網頁時間早於瀏覽器快取網頁的時間,就表示網站伺服器的網頁內容並未更動,因此無須重新抓取網頁資訊。網站伺服器將不會回傳任何的頁面內容給瀏覽器,而僅傳回編號304的HTTP狀態碼,當瀏覽器接到此狀態碼後,就會顯示在瀏覽器上的網頁快取資料。反之,當伺服器上的網頁時間晚於此瀏覽器快取網頁時間,即表示網站伺服器的網頁內容已更動,因此將重新抓取最新的網頁資訊。

Validation(驗證機制)

這是用來驗證快取空間內資料的內容有效機制,HTTP/1.1通訊協定提供了下列欄位來驗證資料的時間:

·ETag(Entity Tag):用來驗證快取空間中資料內容是否有效的機制,網站伺服器會利用雜湊(Hash)技術將相關的網頁內容編碼成唯一的值,之後當瀏覽器瀏覽網站上的網頁時就會比對此值。如果此值相等,表示網站上的網頁內容並未更改,反之,則代表網頁內容已更改而須重新抓取網站上的網頁資訊。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!