iT邦幫忙

29

網頁加速的14條黃金法則

@ONE爸爸寫的《High Performance Web Sites 》書評,本書作者Steve Souders曾任雅虎CPO(Chief Performance Officer),在雅虎負責研究改善網站效能的方法,他以多年的經驗整理出以下14個網站前端設計需要注意的準則。

前端開發人員可以到yahoo!開發人員網站下載YSlow,它是一個Firefox的外卦,會針對下面幾個原則為你的網站測試,測試結果由A~F,並告訴你哪些符合這些原則,哪些不符合,還蠻簡單易用的。
1. 減少需要發出HTTP Request的數量
當你設計的網頁中包含的元件數量越多,Client需要對網站伺服器發出的HTTP Request也會增加,同時也會延長網頁處理的時間。

2. 採用Content Delivery Network服務
由Mirror Image、Akamai、SAVVIS等業者所提供的Content Delivery Network(CDN,內容遞送網路服務),可以供應強大的全球網路基礎架構,將網站以最有效的方式傳送給全球使用者,並自動幫網站選擇最佳路徑傳送資料,例如,根據瀏覽者所在地、網路品質及流量狀況,選擇距離用戶端最近的資料中心傳送資料,確保網頁的瀏覽品質及運作速度。

3. 在網頁中加入過期檔頭
你可以利用這個設定讓網頁具備快取機制,縮短頁面載入時間,尤其是針對內容不常變動的網頁。當然這樣的運用,得視你的網頁性質而定,若內容變動頻率高的網頁,則不適用此方式。

4. 善用Gzip壓縮機制
以XML/HTTP做為資料交換的開放格式已經十分普遍,傳輸的檔案體積,較過去單純的EDI方式增加許多,用傳送壓縮時間換取傳輸時間,也是一種提升效率的策略,目前常見的網站伺服器大都支援此項技術。你甚至也可以視情況選擇壓縮HTML、CSS及JavaScript的檔案內容。

5. 將Stylesheet置於網頁頁首
將樣式表(Stylesheet)置於頁首,可以讓CSS設定先行載入,在第一時間套用設定直接呈現網頁。相較於把樣式表放置在頁尾,等所有內容都下載完畢後才套用,樣式表置於頁首的作法,除了頁面呈現速度較快,載入過程中也較不易造成空白頁的出現。

6. 將Script內容置於頁尾
許多實際狀況中,網頁包含的Script程式,本身並不需要在載入後立即執行,所以作者建議將這些程式碼置於頁尾,至少內容可以在傳輸前段時間即備妥,讓使用者有較佳的瀏覽體驗。

7. 避免CSS Expression的撰寫方式
CSS Expression的目的,在於讓自訂樣式的語法可以取代部分的Script內容,雖然這麼做很好用,但因網頁顯示過程中花費較多的邏輯判斷時間,造成網站效能的致命傷。

8. 將JavaScript及CSS內容獨立於網頁內容之外
透過獨立內容的方式,讓HTML本文檔案縮小,而且可以同時被瀏覽器下載,以縮短網頁呈現的時間。

9. 減少DNS查找的次數,縮短取得網頁內容之前的前置時間
雖然網頁可以串連不同網站來源的內容,但是不同網站來源的內容一旦太多,便會延遲頁面載入速度;如果能夠減少網頁內不同網站來源的內容,就可以減少從用戶端發出的DNS Request數量,縮短DNS的查詢時間。

10. JavaScript內容精簡化
網頁中的JavaScript也是下載的一部分,所以當程式碼內容較多時,亦會直接影響網頁下載的速度。檢視一下程式碼,移除不必要的部分。

11. 避免重導向
網頁重新導向是很方便的功能,但對於使用者而言,他必須等待更多的時間直到最終頁面被載入,所以應該盡可能避免使用重導向轉址功能。

12. 移除重複的Script程式碼
重複的Script程式碼需要花費更多的下載時間,這個問題通常發生在程式碼未能妥善模組化的情況下,檢查一下你的Script程式吧。

13. 善用Etag
透過設定Web Server中的Entity Tag方式,能決定網頁中被快取的內容,以加速網頁呈現,但也得視網頁內容特性而定,Etag主要運用在靜態頁面上,而動態顯示內容的網頁則不適用此方式。

14. 讓Ajax程式可做到暫存快取
Ajax架構透過非同步的傳輸方式,讓使用者具有較佳的使用體驗,卻不見得是效能的保證。除了可以透過利用Gzip壓縮、避免DNS查找次數、簡化JavaScript內容之外,控制HTTP過期檔頭來快取Ajax網頁,也能發揮明顯效果。


0
john651216
iT邦研究生 1 級 ‧ 2008-04-18 09:32:00

謝謝分享,很有用

0
plutosrita
iT邦研究生 1 級 ‧ 2008-04-18 09:54:32

謝謝分享

0
海綿寶寶
iT邦超人 1 級 ‧ 2008-04-18 10:23:51

唉, 我真是學藝不精, 第一次看到 CPO 這字

0
cghaung
iT邦研究生 5 級 ‧ 2008-04-18 16:28:01

很有用的知識,謝謝!!

0
davistai
iT邦大師 1 級 ‧ 2008-04-18 18:51:33

這個不錯!!

0
pqr0007
iT邦研究生 1 級 ‧ 2008-04-18 21:36:48

very special and helpful! 謝謝分享!

0
5min
iT邦好手 10 級 ‧ 2008-04-19 11:31:20

好分享

0
tgunlu
iT邦研究生 1 級 ‧ 2008-04-19 14:20:13

謝謝分享

0
fanylu60
iT邦研究生 1 級 ‧ 2008-04-19 14:30:38

感謝提供的資訊

0
yce701116
iT邦研究生 1 級 ‧ 2008-04-19 22:21:10

感謝分享這個資訊

0
albert0405
iT邦研究生 3 級 ‧ 2008-04-21 00:56:24

學到許多,感恩

0
loripan
iT邦研究生 1 級 ‧ 2008-05-05 22:01:02

謝謝分享

0
amber093100
iT邦研究生 1 級 ‧ 2008-05-05 22:42:46

謝謝分享

0
jennymsn
iT邦好手 10 級 ‧ 2008-05-05 23:05:42

謝謝分享

0
xxxyyyzzz
iT邦研究生 1 級 ‧ 2008-05-09 08:50:16

謝謝分享

0
funkent
iT邦高手 1 級 ‧ 2008-05-11 19:46:51

好見解阿

0
tyc1220
iT邦研究生 1 級 ‧ 2008-05-15 02:18:17

謝謝分享

0
yiying
iT邦新手 1 級 ‧ 2012-06-20 22:59:37

謝謝分享~

我要留言

立即登入留言