在本系列的第一節中,講了 提高網站性能中網站“內容”有關的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文件頭,增加了緩存在浏覽器中內容的數量,並且可以在用戶接下來的請求中再次使用這些內容,這甚至都不需要通過用戶發送一個字節的請求。
上一頁
12 3 下一頁 閱讀全文