我有一个网页,我想用html和javascript显示数万个图像。每张表中一次只能看到大约24-30张图像(每行6张)所以我认为我很聪明地编写自己的javascript滚动,例如,当向下滚动时,从第2-3行开始构建屏幕的底部,并且当图像靠近时动态加载图像,并且删除可见区域顶部上方的行2-3(使用javascript' s删除整个表格行上的子项)。但是,这并没有对我希望保存RAM的影响,在看到几百行后,浏览器经常因内存不足而崩溃。
我已经搜索过告诉浏览器它可以释放这些对象但没有成功的方法。据我所知,在一些现代实现中,您可以要求浏览器运行垃圾收集,但这在所有浏览器中都是如此,或者完全支持。我可以想象的一个黑客是经过几十行,以编程方式重新加载页面,同时以某种方式保存状态(cookie,本地存储或在URL中)但我更倾向于让它成为一个连续的页面并简单地释放由不再使用的图像。这样做的正确方法是什么?
答案 0 :(得分:1)
hackartist,
基于滚动动态加载图像是最佳解决方案,这是绝对正确的。但是,为什么重新发明轮子?你所指的是lazy loading。 jQuery和Echo.js库都可以解决这个问题。
由于以上两个都是开源的:您可以自己引用它们的实现,有助于提高它们的性能,或者只是使用它们已有的工具!
另外,仅供参考,这是一篇很棒的帖子,标题为" What is JavaScript garbage collection?" Stack Overflow,它可以解释如何为JS实现垃圾收集。这里还有一个关于Mozilla开发者网络的参考文献,标题为" Memory Management,"这解释了如何在不再需要时释放你分配的内存。
如果您有任何疑问,请与我们联系!