你瞭解雅虎前端最佳化的35條軍規嗎?你能說上幾條?

王铁柱6發表於2024-11-25

我知道雅虎前端最佳化的35條軍規(實際上後來擴充套件到36條,也有人說是34條,核心內容相似)。我能說上幾條,並解釋其背後的原理:

  1. 減少 HTTP 請求: 這是最重要的一條。每次請求都會產生網路延遲,包括 DNS 查詢、建立連線、SSL 握手等。減少請求次數可以顯著提高頁面載入速度。合併CSS和JS檔案,使用CSS Sprites,內聯圖片(Data URI)等都是減少HTTP請求的有效方法。

  2. 使用內容分發網路 (CDN): CDN 將靜態資源快取到全球各地的伺服器上,使用者可以從離他們最近的伺服器獲取資源,從而減少延遲。

  3. 新增 Expires 頭: 透過設定 Expires 頭,告訴瀏覽器可以將靜態資源快取到本地,避免重複下載。Cache-Control: max-age 也是類似的機制,更推薦使用這種方式。

  4. 壓縮元件: 使用 Gzip 壓縮 HTML、CSS、JavaScript 等文字資源,可以顯著減少檔案大小,從而加快下載速度。

  5. 將樣式表放在頂部: 將 CSS 放在 <head> 中,可以使頁面逐步渲染,避免出現“白屏”現象。

  6. 將指令碼放在底部: JavaScript 會阻塞頁面渲染,因此應將指令碼放在 <body> 的底部,或者使用 deferasync 屬性,避免阻塞頁面載入。

  7. 避免 CSS 表示式: CSS 表示式會降低渲染效能,應該儘量避免使用。

  8. 使用外部 JavaScript 和 CSS: 外部檔案可以被瀏覽器快取,從而減少後續頁面載入時間。

  9. 減少 DNS 查詢: 減少域名可以減少 DNS 查詢次數,從而提高頁面載入速度。

  10. 精簡 JavaScript: 移除不必要的空格、註釋等,可以減小檔案大小,提高下載速度。可以使用工具例如UglifyJS或Terser來完成。

  11. 避免重定向: 重定向會增加一次額外的 HTTP 請求,應該儘量避免。

  12. 移除重複指令碼: 重複的指令碼會增加下載時間和解析時間,應該確保頁面中沒有重複的指令碼。

  13. 配置 ETag: ETag (Entity Tag) 是一個資源的唯一識別符號。瀏覽器可以使用 ETag 來判斷資源是否已快取,避免重複下載。

這只是其中一部分,還有其他最佳化策略,例如避免 404 錯誤,使用 GET 請求 Ajax,減少 DOM 元素數量,避免使用 iframe 等。 需要根據具體情況選擇合適的最佳化策略。 現在的前端最佳化手段也在不斷髮展,有些規則的優先順序有所變化,但其核心思想仍然適用。

相關文章