CSS 檔案是妨礙顯示的資源:瀏覽器必須先載入及處理這些檔案,才能算繪網頁。包含不必要的大型樣式表的網頁,需要較長的時間才能顯示。
在本指南中,您將瞭解如何延遲不重要的 CSS 來最佳化關鍵轉譯路徑,並改善首次顯示內容所需時間 (FCP)。
範例:CSS 載入效率不佳
以下範例包含一個摺疊式面板,其中有三個隱藏的文字段落,每個段落都使用不同的類別設定樣式:
本頁要求包含八個類別的 CSS 檔案,但並非所有類別都需要轉譯「可見」內容。
本指南的目標是對這個頁面進行最佳化,讓系統只同步載入重要樣式,而其他樣式 (包括段落樣式) 則以非阻斷方式載入。
測量
在頁面上執行 Lighthouse,然後前往「效能」部分。
報表會顯示值為「1s」的「First Contentful Paint」指標,以及指向「Eli removerender-blocking resources」(排除會禁止轉譯資源) 機會 (指向「style.css」檔案):
如要查看這段 CSS 如何阻斷轉譯,請按照下列步驟操作:
- 在 Chrome 中開啟網頁。
- 按下
Control+Shift+J
(在 Mac 上為Command+Option+J
) 開啟開發人員工具。 - 按一下「成效」分頁標籤。
- 在「Performance」面板中,按一下「Reload」。
在產生的追蹤記錄中,您會看到 CSS 載入完成之後,立即放置 FCP 標記:
也就是說,瀏覽器必須等待所有 CSS 載入並完成處理,才能在畫面上繪製單一像素。
最佳化
如要改善這個頁面,您必須知道哪些類別屬於重要類別。你可以使用涵蓋範圍工具確認這一點:
- 在開發人員工具中,按下
Control+Shift+P
或Command+Shift+P
(Mac) 開啟指令選單。 - 輸入「涵蓋範圍」,然後選取「顯示涵蓋範圍」。
- 按一下「重新載入」重新載入網頁,即可開始擷取涵蓋率。
按兩下報表即可查看詳細資料:
- 標示為綠色的課程為必修課程。瀏覽器需要這些資訊才能顯示可見內容,包括標題、副標題和摺疊按鈕。
- 以紅色標示的類別並非關鍵,只會影響無法立即顯示的內容,例如隱藏的段落。
運用這些資訊將 CSS 最佳化,讓瀏覽器可在網頁載入後立即處理重要樣式,並延遲不重要的 CSS 供日後使用:
擷取涵蓋率報表中標示為綠色的類別定義,並將這些類別放在頁面標頭的
<style>
區塊中:<style type="text/css"> .accordion-btn {background-color: #ADD8E6;color: #444;cursor: pointer;padding: 18px;width: 100%;border: none;text-align: left;outline: none;font-size: 15px;transition: 0.4s;}.container {padding: 0 18px;display: none;background-color: white;overflow: hidden;}h1 {word-spacing: 5px;color: blue;font-weight: bold;text-align: center;} </style>
套用下列模式,以非同步方式載入其餘類別:
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="styles.css"></noscript>
這不是載入 CSS 的標準方式。運作方式如下:
link rel="preload" as="style"
會以非同步方式要求樣式表。如要進一步瞭解preload
,請參閱預先載入重要素材資源指南。link
中的onload
屬性可讓瀏覽器在樣式表單載入完畢後處理 CSS。- 在使用
onload
處理常式之後,將onload
處理常式「為空值」,可協助某些瀏覽器在切換rel
屬性時避免重新呼叫處理常式。 noscript
元素中的樣式工作表參照,可為不執行 JavaScript 的瀏覽器提供備用方案。
即使大多數樣式是以非同步方式載入,最終頁面的內容仍與先前版本完全相同。以下是對 CSS 檔案的內嵌樣式和非同步要求在 HTML 檔案中的外觀:
監控
使用開發人員工具,在已最佳化的網頁上執行另一個效能追蹤記錄。
網頁要求 CSS 前會顯示 FCP 標記,表示瀏覽器不需要等待 CSS 載入,即可算繪網頁:
最後一個步驟是在經過最佳化處理的網頁上執行 Lighthouse。
在報表中,您會看到 FCP 網頁已縮短 0.2 秒 (改善幅度為 20%):
「排除會妨礙顯示的資源」建議不再顯示在「Opportunities」下方,而是顯示在「Passed Audits」部分:
後續步驟和參考資料
在本指南中,您瞭解如何手動擷取網頁中未使用的程式碼,以便延後非必要的 CSS。針對較複雜的實際工作環境,提取重要 CSS 指南介紹了一些最常用的提取重要 CSS 工具,並提供程式碼研究室,讓您瞭解這些工具在實際工作環境中的運作方式。