2013-09-25 83 views
0

我有检查,如果一个用户登录页面,如果他们都没有,他们重定向到登录页面,我一直在经历着的事件监听器一些奇怪的行为计入Chrome开发工具。浏览器会话导致事件监听器,以增加

当用户被重定向到登录页面,登录成功,然后被重定向回到主页的事件监听器计数是6000左右。

当用户关闭选项卡,然后导航回家乡页面(这时候跳过登录屏幕,因为他们的会话仍处于活动状态)的事件监听器计数只有4000

什么会导致在事件侦听器的数量这一戏剧性的区别?在同一个页面被加载两次,唯一的区别是会话已经建立......

它是什么已经具有使事件监听器计数下降如此多的活动会话?

回答

1

时间轴选项卡显示选项卡的当前状态内存不是内存的内存。这意味着它不一定只包含当前网站分配的内存。如果您使用相同的选项卡访问了几个页面,则前一页中的垃圾可能仍在标签内存中。

这就是为什么在新选项卡中,您有预期数量的4000个听众,而在旧的标签中,您曾经访问过'home page'->'login page'->'home page',您可以看到6000个听众。

可以在devtools的左下角用“垃圾桶”按钮来强制垃圾收集。单击它后,您应该看到听众数量下降。

Garbage collection icon in Chrome Dev Tools

BTW你必须在网页上4000+事件监听器?这是很多。我还没有看到有超过1000个听众的页面(这个页面有80个,twitter有200个,而gmail有1000个)。如果你不是在一些超级复杂的webapp上工作(比gmail复杂4倍),那么你做错了什么。如果您使用jQuery,请确保您知道$('ul').on('click','li',function(){})的功能。如果您使用的是vanilla JS,请确保您已阅读过关于事件冒泡的内容,以及它如何帮助您减少侦听器的数量。

+0

谢谢!这正是我所希望的。是的,我工作在一个非常复杂的业务应用,其原因有由于我们使用的我们jqwidgets功能丰富的网格(我们有很多他们)有这么多的听众主要是。 –