Angular2内存消耗非常大的SPA

时间:2016-10-14 10:09:21

标签: memory angular single-page-application

我们正在为公司的内部用途设计新的Web应用程序,并且将在MVC 6和Angular2中创建前端。 该项目非常庞大......分析显示了大约1000种形式。 此外,每个终端都可以访问的内存量有限(我们还不知道确切数量),因为我们将通过Citrix提供页面。

我知道Angular2是在考虑大型应用程序的情况下创建的,但我发现了一些关于如此大型SPA的问题:

  1. 主模块声明对象太大。需求分析中的1000个表单是单独组件中的两倍,是否可以最小化这个?
  2. Angular2为加载的组件保留了多少内存?检查JS堆内存。我可以看到它在Heap中保留了组件原型,直到路由到另一个页面。我找不到关于Ang2的内存管理的信息,所以任何链接或信息都非常受欢迎!
  3. 每个模块是否有最佳组件数量?一个建议是,在他们自己的MVC View中打破几个较小的SPA。
  4. 我主要担心的是问题#2。有限数量的内存是具有如此多组件的项目的问题。 客户端想要一个“app app”的动态标签,他可以随时访问任何视图,并能够保持更多这样的视图打开。 在更多MVC视图中拆分应用程序将使此功能难以实现。

    tl; dr:需要有关非常大的SPA的Angular2内存消耗的信息和指南!

    非常感谢你!

1 个答案:

答案 0 :(得分:3)

我没有看到表格数量有问题。 组件只是编译为JavaScript,不会占用大量内存。

当组件被实例化时,它们将为保持其状态的成员变量和Angular维护的某些状态带来一些额外的空间。

通常会导致问题的原因是同时显示大量组件(甚至在可见区域之外 - 而不是仅显示虚拟滚动所需的内容),因为这需要大量的CPU时间并且可以使浏览器缓慢且无响应。

模块的大小本身并不重要。
引入的模块,用于支持与路由器一起部分应用程序的延迟加载。
因此,将应用程序的某些部分放入延迟加载的模块中,这些模块在初始加载时不需要。当用户导航到特定路径时,您可以根据需要加载部分应用程序(延迟加载的模块)。