【发布时间】:2012-10-10 18:21:51
【问题描述】:
我创建了一个用于查看图像的网页。这个页面有一些我没有写的其他代码。该页面在加载时会加载 40 个小图像。然后用户将向下滚动并可以通过 ajax 加载 40 张图像的附加页面。一旦我达到 15-20 页,我注意到页面开始显着变慢。我检查了应用程序计数器,它可以达到 100% cpu,内存可以超过 3GB。然后我不可避免地会得到 JQuery 执行时间过长的模态,问我是否要停止执行脚本。现在我意识到一个包含多达 800 个图像的页面是一个很大的负载,但是 JQuery 的问题向我表明,一些代码也可能会迭代这个越来越大的 dom 对象组。当我通过 15 页左右时,它几乎似乎呈指数级变慢。一旦我达到 20 页,它就会变得几乎无法使用。
首先,当您有这么多图像时,即使使用最少的 JS,是否也可以高效地运行页面?其次,是否有推荐的方法来“跟踪” JS 并查看执行了哪些类型的函数来帮助确定最可能的罪魁祸首是什么?这对我来说是最重要的——在 Firebug 中有什么好的方法吗?
谢谢:)
编辑 - 我找到了答案。我有一些旧代码用于替换无法用通用图像加载的图像。此代码使用 Jquery 的 .each 运算符,因此每次加载页面时都会遍历整个页面和每个新的 ajax 添加。我将为需要在 CSS 中检查的图像设置一个类,以便 ajax 加载的图像不受影响。
【问题讨论】:
-
在 Chrome 中打开网站,按 F12,点击“个人资料”
-
听起来像是内存泄漏?除非这 800 张图片的大小都是 1 mb+?
-
Cory - 图片大小在 8-50KB 之间 Obrian - 可以
-
这些图片是如何定位的?它们是否都被完全倾倒在屏幕上并在您滚动时不断更新?您所解释的一切似乎都不是这里的确凿证据...只是一堆图像转储到 DOM 中,而您正在此页面上滚动?
-
你在你的 jQuery 中使用了什么样的选择器?他们可能需要优化。是否还设置了任何活动/代表?如果不看代码,很难想象问题出在哪里。不过,希望其中一些问题能引起您的思考
标签: javascript jquery performance image firebug