ユーザーエクスペリエンスの一部として、ブラウザがWebページをどのように描画し、特に大量の画像またはビデオを含むページがどのように読み込まれるかは重要です。特に、画像の読み込みとデコードはWebパフォーマンスに大きな影響を与えます。この問題を解決するために、HTML5は<img>タグに新たな属性であるdecodingを導入しました。

 

何が問題なのか

画像の読み込みは、ネットワークからのダウンロードとブラウザによる画像のデコード、2つの主要な工程に分かれます。通常、これらの工程は同期的に行われ、デコードが完了するまでページの描画がブロックされることがあります。これは、特に大きな画像を読み込んでいるときや、多数の画像を含むページを読み込んでいるときに、ユーザーエクスペリエンスを著しく損なう可能性があります。

 

解決策: decoding属性

これに対応するために、<img>タグにはdecoding属性が導入されました。この属性は3つの値を取ることができます:

 

  • "sync": 画像は同期的にデコードされます。これがデフォルトの挙動です。
  • "async": 画像は非同期的にデコードされます。これにより、画像のデコードがページの描画をブロックすることはありません。
  • "auto": ブラウザは画像のデコード方法を決定します。これがデフォルトの値です。

したがって、ページの描画をブロックすることなく、画像のデコードを最適化するためには、<img>タグにdecoding="async"属性を追加することを検討するべきです。


<img src="image.jpg" decoding="async" alt="Description">

注意点

この属性が広く使われているわけではないので、対応していないブラウザがまだ存在します。また、この属性は<img>タグに対してのみ有効で、他のメディア要素(<video><iframe>)や、<svg><picture>のような他の画像関連のタグに対しては直接効果を発揮しません