2015年7月26日 星期日

高效能網站開發指南

1. 影響網路通訊效能的兩個關鍵元素: 延遲(Latency). 頻寬(Bandwidth)。延遲(而非頻寬)通常是大多數網站的效能瓶頸。
2. 根據研究結果,一旦系統出現100~200ms的延遲,絕大數人都會確實感到所謂的「延誤」 (lag)。一旦延遲時間超過300ms,在互動上通常就會被當作是「遲鈍」 (sluggish),而在碰到1000ms以上的阻塞情況下,很多使用者都會在等候回應的時候,開始轉到另一個更迫切的事務上。








3. TCP的最佳化重點是在資料傳遞的準確性,而非即時性。這樣的特性,相對地位瀏覽器網頁效能的最佳化工作帶來挑戰。
4. 「壅塞崩潰」(congestion collapse): 假如任何主機的往返時間超過重新傳送的最大間隔的話,這主機就會一再地把相同資料包的副本發送到網路上。如此一來,整個網路就會出現很大的麻煩問題。
5. Head-of-Line Blocking: 每個TCP封包被放置在網路上的時候,夾帶著一個獨一無二的序號,而該項資料一定會被依序第傳到接收端。假如其中有個封包在送往接收端的路上發生遺失狀況的話,所有後續封包就必須先被保留在接收端的TCP緩衝區,直到遺失的封包被重新傳送,並且到達接收端為止。
6. UDP不提供的服務
   6.1 不保證訊息傳遞情況 => 沒有ACK訊號,不做重新傳送,沒有逾時機制。
   6.2 不保證傳輸次序 => 無封包序號,不做重新排序處理
   6.3 無連線狀態追蹤 => 沒有連線建立或拆卸機制
   6.4 無擁塞控制機制 => 無內建客戶端或網路回饋機制
7. Browser Prosessing Pipeline
 










8. Cookies 是許多應用程式的常見效能瓶頸,許多開發者都會忘記,他們會因此而把明顯的傳輸負擔加諸到每一個請求上。
9. 考慮對低於1~2KB以下的資源進行內聯處理(resource inlining),因為在這個門檻以下的資源,往往都會產生比該項資源本身還高的HTTP成本。

  • 假如檔案都是小的,而且被限定在幾個特定頁面裡的話,考慮內聯處理。
  • 假如小的檔案常常會被多個頁面重複使用到的話,就考慮套件打包方式。
  • 假如小的檔案擁有較高的更新頻率的話,則將他們個別保存。
10. 長期有效的效能最佳慣例
  • 減少DNS查詢
  • 重複使用TCP連線
  • 將HTTP重導數量降到最低
  • 使用內容傳輸網路(CDN)
  • 刪除不必要資源

沒有留言:

張貼留言