在本系列的第一節(jié)中,講了 提高網(wǎng)站性能中網(wǎng)站“內(nèi)容”有關(guān)的10條原則 。除了在網(wǎng)站在內(nèi)容上的改進外,在網(wǎng)站服務(wù)器端上也有需要注意和改進的地方,它們包括:
- 使用內(nèi)容分發(fā)網(wǎng)絡(luò)
- 為文件頭指定Expires或Cache-Control
- Gzip壓縮文件內(nèi)容
- 配置ETag
- 盡早刷新輸出緩沖
- 使用GET來完成AJAX請求
11、使用內(nèi)容分發(fā)網(wǎng)絡(luò)
用戶與你網(wǎng)站服務(wù)器的接近程度會影響響應(yīng)時間的長短。把你的網(wǎng)站內(nèi)容分散到多個、處于不同地域位置的服務(wù)器上可以加快下載速度。但是首先我們應(yīng)該做些什么呢?
按地域布置網(wǎng)站內(nèi)容的第一步并不是要嘗試重新架構(gòu)你的網(wǎng)站讓他們在分發(fā)服務(wù)器上正常運行。根據(jù)應(yīng)用的需求來改變網(wǎng)站結(jié)構(gòu),這可能會包括一些比較復(fù)雜的任務(wù),如在服務(wù)器間同步Session狀態(tài)和合并數(shù)據(jù)庫更新等。要想縮短用戶和內(nèi)容服務(wù)器的距離,這些架構(gòu)步驟可能是不可避免的。
要記住,在終端用戶的響應(yīng)時間中有80%到90%的響應(yīng)時間用于下載圖像、樣式表、腳本、Flash等頁面內(nèi)容。這就是網(wǎng)站性能黃金守則。和重新設(shè)計你的應(yīng)用程序架構(gòu)這樣比較困難的任務(wù)相比,首先來分布靜態(tài)內(nèi)容會更好一點。這不僅會縮短響應(yīng)時間,而且對于內(nèi)容分發(fā)網(wǎng)絡(luò)來說它更容易實現(xiàn)。
內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)是由一系列分散到各個不同地理位置上的Web服務(wù)器組成的,它提高了網(wǎng)站內(nèi)容的傳輸速度。用于向用戶傳輸內(nèi)容的服務(wù)器主要是根據(jù)和用戶在網(wǎng)絡(luò)上的靠近程度來指定的。例如,擁有最少網(wǎng)絡(luò)跳數(shù)(network hops)和響應(yīng)速度最快的服務(wù)器會被選定。
一些大型的網(wǎng)絡(luò)公司擁有自己的CDN,但是使用像 Akamai Technologies ,Mirror Image Internet , 或者 Limelight Networks 這樣的CDN服務(wù)成本卻非常高。對于剛剛起步的企業(yè)和個人網(wǎng)站來說,可能沒有使用CDN的成本預(yù)算,但是隨著目標用戶群的不斷擴大和更加全球化,CDN就是實現(xiàn)快速響應(yīng)所必需的了。以Yahoo來說,他們轉(zhuǎn)移到CDN上的網(wǎng)站程序靜態(tài)內(nèi)容節(jié)省了終端用戶20%以上的響應(yīng)時間。使用CDN是一個只需要相對簡單地修改代碼實現(xiàn)顯著改善網(wǎng)站訪問速度的方法。
12、為文件頭指定Expires或Cache-Control
這條守則包括兩方面的內(nèi)容:
- 對于靜態(tài)內(nèi)容:
設(shè)置文件頭過期時間Expires的值為“Never expire”(永不過期)
- 對于動態(tài)內(nèi)容:
使用恰當?shù)腃ache-Control文件頭來幫助瀏覽器進行有條件的請求
網(wǎng)頁內(nèi)容設(shè)計現(xiàn)在越來越豐富,這就意味著頁面中要包含更多的腳本、樣式表、圖片和Flash。第一次訪問你頁面的用戶就意味著進行多次的HTTP請求,但是通過使用Expires文件頭就可以使這樣內(nèi)容具有緩存性。它避免了接下來的頁面訪問中不必要的HTTP請求。Expires文件頭經(jīng)常用于圖像文件,但是應(yīng)該在所有的內(nèi)容都使用他,包括腳本、樣式表和Flash等。
瀏覽器(和代理)使用緩存來減少HTTP請求的大小和次數(shù)以加快頁面訪問速度。Web服務(wù)器在HTTP響應(yīng)中使用Expires文件頭來告訴客戶端內(nèi)容需要緩存多長時間。下面這個例子是一個較長時間的Expires文件頭,它告訴瀏覽器這個響應(yīng)直到2010年4月15日才過期。
Expires: Thu, 15 Apr 2010 20:00:00 GMT 如果你使用的是Apache服務(wù)器,可以使用ExpiresDefault來設(shè)定相對當前日期的過期時間。下面這個例子是使用ExpiresDefault來設(shè)定請求時間后10年過期的文件頭: ExpiresDefault "access plus 10 years" 要切記,如果使用了Expires文件頭,當頁面內(nèi)容改變時就必須改變內(nèi)容的文件名。依Yahoo!來說我們經(jīng)常使用這樣的步驟:在內(nèi)容的文件名中加上版本號,如yahoo_2.0.6.js。
使用Expires文件頭只有會在用戶已經(jīng)訪問過你的網(wǎng)站后才會起作用。當用戶首次訪問你的網(wǎng)站時這對減少HTTP請求次數(shù)來說是無效的,因為瀏覽器的緩存是空的。因此這種方法對于你網(wǎng)站性能的改進情況要依據(jù)他們“預(yù)緩存”存在時對你頁面的點擊頻率(“預(yù)緩存”中已經(jīng)包含了頁面中的所有內(nèi)容)。Yahoo!建立了一套測量方法,我們發(fā)現(xiàn)所有的頁面瀏覽量中有75~85%都有“預(yù)緩存”。通過使用Expires文件頭,增加了緩存在瀏覽器中內(nèi)容的數(shù)量,并且可以在用戶接下來的請求中再次使用這些內(nèi)容,這甚至都不需要通過用戶發(fā)送一個字節(jié)的請求。
出處:藍色理想
責任編輯:bluehearts
上一頁 下一頁 Yahoo!網(wǎng)站最佳體驗守則之服務(wù)器篇 [2]
◎進入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|