大きな画像を読み込んで、ブラウザにサイズを変更してもらいます。サイズを明示的に設定しています。
<img src="http://example.com/image1.jpg" width="240" height="360"/>
ページにはそのような画像がたくさんあります。スクロールは非常に遅く、途切れがちです。Chromeのイベントタイムラインは、スクロールすると次のようになります。
Paint
* Image decode (JPEG)
* Image resize (non-cached)
* Image decode (JPEG)
* Image resize (non-cached)
* ...
Paint
* Image resize (cached)
* Image resize (cached)
* Image resize (cached)
* Image resize (cached)
Paint
* Image decode (JPEG)
* Image resize (non-cached)
* Image decode (JPEG)
* Image resize (non-cached)
* ....
Paint
* Image resize (non-cached)
* Image resize (non-cached)
* Image resize (non-cached)
* Image resize (non-cached)
Paint
* Image decode (JPEG)
* Image resize (cached)
* Image decode (JPEG)
* Image resize (cached)
* ...
等
一部のPaintイベントに画像のデコードが含まれ、他のイベントに含まれない理由や、サイズ変更がキャッシュされる場合とされない場合がある理由がわかりません。ビューポートに入ってくる新しい画像と関係があるに違いないと思います。
ページの読み込み時に画像のサイズ変更コストを画像ごとに1回だけ支払い、スクロール中の画像のサイズ変更を回避するためにできることはありますか?
(もちろん、最善の解決策は、すでに適切なサイズの画像を読み込んでブラウザのサイズ変更を回避することであることを理解しています。この場合、これは実用的ではありません。)