【发布时间】:2016-12-27 05:12:10
【问题描述】:
我正在加载大图像并让浏览器调整它们的大小。我明确设置了大小。
<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 事件包含图像解码而其他事件不包含,也不知道为什么有时调整大小会被缓存而有时却没有。我想这一定与进入视口的新图像有关。
我能做些什么来确保我在页面加载时只为每张图片支付一次调整图片大小的费用,并避免在滚动期间调整图片大小?
(当然,我知道最好的解决方案是通过加载已经具有适当大小的图像来避免浏览器调整大小。在这种情况下,这是不切实际的。)
【问题讨论】:
-
如果你可以依赖画布,you can use canvas to really resize the images,而不是仅仅缩放它们。
-
您找到解决方法了吗?我遇到了同样的问题,不知道如何解决。