具代表性的面試主題

前端面試:如何安全使用 fetchpriority 優化 LCP 圖片?

前端中等
Offer.cc 編輯團隊發佈 更新

題幹

頁面的 LCP 是首屏圖片,但行動裝置效能不穩定。你會如何決定是否使用 fetchpriority=high,並驗證它沒有傷害其他關鍵資源?

題目

頁面的最大內容繪製元素通常是一張響應式圖片。請設計使用 fetchpriorityloadingpreloadsrcset 的優化方案,並說明實驗、回滾與無障礙要求。

場景與限制

桌面與行動裝置的 LCP 圖片不同,頁面還會載入字型、關鍵 CSS 和分析腳本。瀏覽器會自行調度資源,優先級提示只是提示;不能假設所有瀏覽器都以相同方式執行。

核心考點

考察能否區分發現時機、載入策略與請求優先級。fetchpriority=high 提高資源在瀏覽器佇列中的相對優先級,loading=eager/lazy 影響是否延遲載入,preload 提前宣告資源;三者疊加可能造成重複請求或擠占 CSS、字型頻寬。

參考解法

先用真實使用者資料與效能面板確認 LCP 元素及請求鏈,再只給確定的首屏 LCP 圖片設定高優先級。用 srcsetsizes 選擇合適尺寸,避免同時預載桌面和行動資源。不要批量給清單圖片 high,也不要把首屏圖片設為 lazy。用實驗比較 LCP、關鍵 CSS 完成時間、總位元組和長任務,逐步擴大流量。

關鍵細節

響應式圖片候選必須與 preload 的 imagesrcsetimagesizes 一致,否則可能預載一張、最終渲染另一張。檢查 Network 面板的 priority、Initiator、快取命中與請求時序;在低階裝置和慢網路驗證。保留移除提示的開關與回滾版本。

常見誤區

把 high 當成強制下載;所有圖片都 high;用 preload 取代正確的 HTML 圖片;只看 Lighthouse 不看真實使用者;忽略圖片 alt、尺寸佔位和跨域快取;沒有基線就宣稱 LCP 一定改善。

評估標準

優秀答案能說明 LCP 候選、資源優先級衝突、響應式一致性、實驗指標和回滾條件,並承認瀏覽器實作差異。一般答案只給一個屬性,沒有驗證請求佇列和真實使用者結果。

追問

何時只用 preload 而不用 fetchpriority?

當資源在 HTML 早期不可發現且確實需要提前建立請求時可考慮 preload;若瀏覽器已能及時發現圖片,優先級提示通常更小且更易回滾,仍需實驗確認。

如果 LCP 變好但字型變慢怎麼辦?

比較關鍵 CSS、字型與圖片的請求時序及頻寬占用,降低非必要圖片優先級或移除重複 preload,設定字型載入策略後再測試。

如何保證圖片優化不損害無障礙?

保留準確 alt、明確寬高或比例佔位避免版面偏移,確保低頻寬與停用圖片時仍有可理解內容,並在真實輔助技術上檢查。

公開來源

同類題目