【问题标题】:Refresh web page taking too long time to load刷新网页加载时间过长
【发布时间】:2014-03-10 09:44:44
【问题描述】:

我们正在为此使用以下技术开发单一安装程序 Web 应用程序。

  1. wcf - 命名管道绑定。
  2. javascript、jquery。
  3. 信号R
  4. mvc4

我们在 iis 7.5 中发布了 web 应用程序,操作系统是 windows 7。

这里的问题是在运行应用程序 3 到 4 小时后,我无法在浏览器中执行任何操作,它完全挂起。

我想和你分享几件事,

  1. 在少数情况下,我们会在 dom 中隐藏和显示 HTML 而不是删除。
  2. 事件处理 - 我们正在绑定事件,但我们不检查是否 事件已经映射到该元素。
  3. signalR 也是我的疑问之一。因为它经常池化。

现在,如果我的浏览器卡住了,我只需重新启动我的应用程序池。之后 一切都在我的掌控之中。

所以,你能告诉我为什么会这样吗,可能是我的帖子不清楚,但你 可以得到一些展望

【问题讨论】:

    标签: performance loading webpage


    【解决方案1】:

    您可以use Chrome Profiler(在开发工具> 配置文件中)寻找潜在的内存泄漏。内存泄漏的一个常见原因是在不再需要事件侦听器时忘记取消注册它们。正如你提到的绑定,我认为这是一个可以遵循的线索。

    【讨论】:

    • 好的,我们的项目我们正在使用 .On() 事件委托。那么,我应该使用 .Off() 删除所有附加到元素的事件处理程序吗?
    • 这正是我们的想法。不再需要时立即删除每个事件侦听器。否则每一个都会造成内存泄漏并使您的应用程序响应速度降低。
    • 现在您可以考虑我们在启动时加载 100 多个控件的场景。所以,所有的控件都获得了事件处理程序,我们在这里使用了一些模型弹出窗口,我们在关闭弹出窗口后不删除 html 元素,只是隐藏和显示元素。现在加载了大约 200 个控件并且所有控件都已绑定。现在你可以告诉我解决方案。这是加载所有控件的正确方法吗?
    • 我不能。您必须使用分析器进行调查以确定真正的问题。只有这样,您才能寻找解决方案。否则,您将尝试修复/优化可能不是问题根源的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2011-11-21
    相关资源
    最近更新 更多