圖片政策:縮短載入時間及其他相關事項

使用經過最佳化的圖片政策,確保您的網站使用成效最佳的圖片。

Luna Lu
Luna Lu

圖片通常會佔用大量的視覺空間,並構成網站上下載的位元組中的大部分。最佳化圖片可以改善載入效能並減少網路流量。

令人驚訝的是,網路上有超過半數的網站提供低壓縮或不必要的大型圖片。因此,只透過將圖片最佳化,就有更多空間可以提升效能。

比方說,要怎麼知道圖片是否經過最佳化處理?我該如何將圖片最佳化?我們正在實驗一組新的圖片最佳化功能政策:oversized-imagesunoptimized-lossy-imagesunoptimized-lossless-imagesunoptimized-lossless-images-strict。上述所有功能現在皆可用於來源試用

最佳化圖片政策

權限政策即將推出一組新的映像檔限制,適用於開發期間強制執行的映像檔。系統會將違反任何限制的圖片轉譯為預留位置圖片,方便您輕鬆找出並加以修正。您可以在報表專用模式中指定這些政策,讓圖片在沒有強制執行的情況下正常顯示,而系統也會透過報表觀察違規情事。(詳情請參閱下方的「公開報表模式」一節)。

超大型圖片

oversized-images 權限政策會限制圖片的內建函式尺寸,相對於其容器大小。

當文件使用 oversized-images 政策時,任何內建函式解析度大於任一尺寸容器大小 X 倍的 <img> 元素,都會替換為預留位置圖片。

為什麼?

如果提供比檢視畫面裝置可轉譯的圖片還要多 (例如向行動裝置環境提供電腦版圖片,或是將高像素密度圖片提供給低像素密度裝置),就會浪費網路流量和裝置記憶體。請參閱「提供圖片尺寸正確的圖片」和「提供回應式圖片」,瞭解如何最佳化圖片。

示例

以下提供幾個範例來說明。下圖顯示將圖片顯示大小減半時的預設行為。

預設的調整大小行為。
預設的調整大小行為。

如果我套用下列權限政策,就會改為顯示預留位置圖片,

Permissions-Policy: oversized-images *(2);

圖片對容器而言過大時。
圖片對容器而言過大時。

如果只調降寬度或高度,會取得類似的結果。

調整大小後的寬度 已調整高度
調整寬度和高度。

How to use

總結來說,你可以透過下列任一方式指定 oversized-images 政策:

  • Permissions-Policy HTTP 標頭
  • <iframe> allow 屬性

如要宣告 oversized-images 政策,您需要提供:

  • 特徵名稱 oversized-images (必填)
  • 來源清單 (選填)
  • 起點的門檻值 (即縮小比例 X),以括號指定 (選填)

我們建議將縮放比率設為 2.0 以下。建議您使用不同解析度的回應式圖片,為各種螢幕大小、解析度等條件提供最佳圖片。

其他示例

Permissions-Policy: oversized-images *(2.0)

這項政策會針對門檻值為 2.0 的所有來源強制執行。系統不允許使用縮小比例大於 2.0 的圖片任何 <img> 元素,並替換成預留位置圖片。

Permissions-Policy: oversized-images *(inf) 'self'(1.5)

這項政策會對網站來源強制執行,且門檻值為 1.5。 只有在縮減比率小於或等於 1.5 時,頂層瀏覽情境中的 <img> 元素和相同來源巢狀瀏覽環境才會正常顯示。其他所有位置的 <img> 個元素都會正常顯示。

un 最佳化-{lossy,lossless} 圖片

unoptimized-lossy-imagesunoptimized-lossless-imagesunoptimized-lossless-images-strict 功能政策會限制圖片的內建函式解析度:

unoptimized-lossy-images
Lossy 格式不得超過每像素像素比 X 的 X,而且負荷允許固定為 1 KB。以寬 x H 圖片來說,檔案大小門檻的計算方式為寬 x 高 x X + 1024。
unoptimized-lossless-images
無限制格式不得超過每像素像素比 X,固定 10 KB 的負擔。以寬 x H 圖片來說,檔案大小門檻的計算方式為寬 x 高 x X + 10240。
unoptimized-lossless-images-strict
無限制格式不得超過每像素像素比 X,固定 1 KB 的負擔。以寬 x H 圖片來說,檔案大小門檻的計算方式為寬 x 高 x X + 1024。

當文件使用以下任一政策時,任何違反限制的 <img> 元素都會替換為預留位置圖片。

為什麼?

下載檔案大小越大,載入圖片所需的時間就越長。最佳化圖片時,請盡量縮減檔案大小,例如移除中繼資料、挑選合適的圖片格式、使用圖片壓縮等。請參閱「使用 Imagemin 壓縮圖片」和「使用 WebP 圖片」,瞭解如何最佳化圖片。

範例

以下顯示預設的瀏覽器行為。如果沒有權限政策,未最佳化的失真圖片將僅像最佳化圖片一樣顯示。

比較最佳化的圖片與未最佳化的圖片。
比較最佳化的圖片與未最佳化的圖片。

如果我套用下列權限政策,就會改為顯示預留位置圖片,

Permissions-Policy: unoptimized-lossy-images *(0.5);

圖片未經過最佳化處理時。
圖片未經過最佳化處理時。

How to use

如果您是第一次使用權限政策,請參閱「權限政策簡介」一文瞭解詳情。

總結來說,您可以透過以下方式指定 unoptimized-{lossy,lossless}-images 政策:

  • Permissions-Policy HTTP 標頭
  • <iframe> allow 屬性

如要宣告 unoptimized-{lossy,lossless}-images 政策,您需要提供:

  • 地圖項目名稱,例如 unoptimized-lossy-images (必填)
  • 來源清單 (選填)
  • 起點的門檻值 (即每像素的位元組比率 X),以括號指定 (選填)

我們建議 unoptimized-lossy-images 的每像素像素使用率應設為 0.5 以下,unoptimized-lossless-imagesunoptimized-lossless-images-strict 則建議將每像素像素使用率設為 1 以下。

WebP 格式的壓縮比其他格式更好。如果可以,請以 WebP 失真格式提供所有圖片。如果不夠充分,請嘗試使用 WebP 無損格式。在不支援 WebP 格式的瀏覽器上使用 JPEG。如果所有格式都無效,請使用 PNG。

如果您使用的是 WebP 格式,請嘗試設定更嚴格的門檻:

  • 0.2 為 WEBPV8
  • 0.5 代表 WEBPL

其他示例

Feature-Policy:  unoptimized-lossy-images *(0.5);
                 unoptimized-lossless-images *(1.0);
                 unoptimized-lossless-images-strict *(1.0);

這項政策會對所有閾值為 0.5 (適用於有損格式) 和 1 (無失真格式) 的來源強制執行。如果 <img> 元素的圖片每像素比例超出限制,則一律禁止,並替換成預留位置圖片。

Feature-Policy: unoptimized-lossy-images *(inf) 'self'(0.3);
                unoptimized-lossless-images *(inf) 'self'(0.8);
                unoptimized-lossless-images-strict *(inf) 'self'(0.8);

這項政策是在網站來源強制執行,且閾值為 0.3 (針對損失格式) 和 0.8 (適用於無損格式)。頂層瀏覽環境中的 <img> 元素和相同來源巢狀瀏覽內容只會在符合這些限制時一般轉譯。任何其他位置都可以正常算繪的 <img> 元素。

公開的報表模式

這可能不適合發布含有預留位置圖片的網站。您可以在開發和測試期間,在強制執行模式下使用政策 (以預留位置圖片轉譯未最佳化的圖片),並在實際工作環境中使用僅報表模式。(詳情請參閱權限政策報告)。與 Permissions-Policy HTTP 標頭類似,Permissions-Policy-Report-Only 標頭可讓您即時觀察違規報表,不必執行任何強制執行作業。

限制

圖片政策僅適用於 HTML 圖片元素 (<img><source> 等),且目前不支援背景圖片或產生的內容。如果您希望針對較廣泛的內容提出政策支援,請告訴我們。

將圖片最佳化

我已經談過最佳化圖片的方式,但還沒說是可行的。這個主題不在本文的探討範圍內,但如要進一步瞭解詳情,請瀏覽下方連結和文章結尾列出的程式碼研究室。

請提供寶貴意見

希望這篇文章已讓您充分瞭解圖片政策,並期待您有所期待。我們非常希望各位能試用相關政策, 並提供意見回饋。

您可以透過郵寄清單,針對本文提及的各項功能提供意見回饋:feature-control@chromium.org

我們想瞭解您使用的門檻值,是否對您有幫助。我們很樂意瞭解 unoptimized-lossless-imagesunoptimized-lossless-images-strict 是否更直覺易用,或者是否應改為使用差異負擔配額。試用期即將結束時,我們會發送問卷調查敬請期待!