在本系列的第一節中,講了 提高網站效能中網站“內容”有關的10條原則 。除了在網站在內容上的改進外,在網站伺服器端上也有需要注意和改進的地方,它們包括:
- 使用內容分髮網絡
- 為檔案頭指定Expires或Cache-Control
- Gzip壓縮檔內容
- 配置ETag
- 儘早重新整理輸出緩衝
- 使用GET來完成AJAX請求
11、使用內容分髮網絡
使用者與你網站伺服器的接近程度會影響回應時間的長短。把你的網站內容分散到多個、處於不同地區位置的伺服器上可以加快下載速度。但是首先我們應該做些什麼呢?
按地區布置網站內容的第一步並不是要嘗試重新架構你的網站讓他們在散發者上正常運行。根據應用的需求來改變網站結構,這可能會包括一些比較複雜的任務,如在伺服器間同步Session狀態和合并資料庫更新等。要想縮短使用者和內容伺服器的距離,這些架構步驟可能是不可避免的。
要記住,在終端使用者的回應時間中有80%到90%的回應時間用於下載映像、樣式表、指令碼、Flash等頁面內容。這就是網站效能黃金規則。和重新設計你的應用程式架構這樣比較困難的任務相比,首先來分布靜態內容會更好一點。這不僅會縮短回應時間,而且對於內容分髮網絡來說它更容易實現。
內容分髮網絡(Content Delivery Network,CDN)是由一系列分散到各個不同地理位置上的Web伺服器組成的,它提高了網站內容的傳輸速度。用於向使用者傳輸內容的伺服器主要是根據和使用者在網路上的靠近程度來指定的。例如,擁有最少網路跳數(network hops)和響應速度最快的伺服器會被選定。點擊這裡查看網頁製作教程頻道內容
一些大型的網路公司擁有自己的CDN,但是使用像 Akamai Technologies ,Mirror Image Internet , 或者 Limelight Networks 這樣的CDN服務成本卻非常高。對於剛剛起步的企業和個人網站來說,可能沒有使用CDN的成本預算,但是隨著目標使用者群的不斷擴大和更加全球化,CDN就是實現快速響應所必需的了。以Yahoo來說,他們轉移到CDN上的網站程式靜態內容節省了終端使用者20%以上的回應時間。使用CDN是一個只需要相對簡單地修改代碼實現顯著改善網站訪問速度的方法。
12、為檔案頭指定Expires或Cache-Control
這條規則包括兩方面的內容:
- 對於靜態內容:
設定檔案頭到期時間Expires的值為“Never expire”(永不到期)
- 對於動態內容:
使用恰當的Cache-Control檔案頭來協助瀏覽器進行有條件的請求
網頁內容設計現在越來越豐富,這就意味著頁面中要包含更多的指令碼、樣式表、圖片和Flash。第一次訪問你頁面的使用者就意味著進行多次的HTTP請求,但是通過使用Expires檔案頭就可以使這樣內容具有緩衝性。它避免了接下來的頁面訪問中不必要的HTTP請求。Expires檔案頭經常用於影像檔,但是應該在所有的內容都使用他,包括指令碼、樣式表和Flash等。
瀏覽器(和代理)使用緩衝來減少HTTP請求的大小和次數以加快頁面訪問速度。Web伺服器在HTTP響應中使用Expires檔案頭來告訴用戶端內容需要緩衝多長時間。下面這個例子是一個較長時間的Expires檔案頭,它告訴瀏覽器這個響應直到2010年4月15日才到期。
Expires: Thu, 15 Apr 2010 20:00:00 GMT
如果你使用的是Apache伺服器,可以使用ExpiresDefault來設定相對當前日期的到期時間。下面這個例子是使用ExpiresDefault來設定請求時間後10年到期的檔案頭:
ExpiresDefault "access plus 10 years"
要切記,如果使用了Expires檔案頭,當頁面內容改變時就必須改變內容的檔案名稱。依Yahoo!來說我們經常使用這樣的步驟:在內容的檔案名稱中加上版本號碼,如yahoo_2.0.6.js。
使用Expires檔案頭只有會在使用者已經訪問過你的網站後才會起作用。當使用者首次訪問你的網站時這對減少HTTP請求次數來說是無效的,因為瀏覽器的緩衝是空的。因此這種方法對於你網站效能的改進情況要依據他們“預緩衝”存在時對你頁面的點擊頻率(“預緩衝”中已經包含了頁面中的所有內容)。Yahoo!建立了一套測量方法,我們發現所有的頁面瀏覽量中有75~85%都有“預緩衝”。通過使用Expires檔案頭,增加了緩衝在瀏覽器中內容的數量,並且可以在使用者接下來的請求中再次使用這些內容,這甚至都不需要通過使用者發送一個位元組的請求。