Я загружаю большие изображения и меняю их размер. Я явно задаю размер.
<img src="http://example.com/image1.jpg" width="240" height="360"/>
На странице много таких изображений. Прокрутка очень медленная и прерывистая. Временная шкала событий в хроме выглядит примерно так: прокрутка:
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 включают декодирование изображений, а другие нет, и почему иногда изменение размера кэшируется, а иногда это не так. Я предполагаю, что это должно иметь отношение к новым изображениям, поступающим в порт представления.
Есть ли что-нибудь, что я могу сделать, чтобы обеспечить только оплату изображения за один раз на изображение при загрузке страницы и избежать изменения размера изображения во время прокрутки?
(Конечно, я понимаю, что лучшим решением является избежать изменения размера браузера, загрузив изображение, которое уже имеет соответствующий размер. В этом случае это нецелесообразно.)