为了账号安全,请及时绑定邮箱和手机立即绑定

网站系统打开首页,占用内存过高

网站系统打开首页,占用内存过高

慕村9548890 2019-03-18 15:15:09
公司开发的网站版 后台管理系统,采用webpack+angularJS的技术,现在遇到一个情况,就是仅打开登陆页,就占用了快300M内存,想请问下,各位大神,有遇到过这种情况吗?怎么解决的?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

300M!

打开 chrome 调试器,看看 瓶颈在哪里, 也许读取了一个不该载入的静态资源。

我感觉如楼上所言 路由懒加载 也许最有帮助


查看完整回答
反对 回复 2019-03-29
?
千万里不及你

TA贡献1784条经验 获得超9个赞

300M的内存应该和资源加载的大小关系不大,使用wepback打包不minify一般最大也就几M左右,加上一些图片和第三方库,算上10M足够了。而且关于占用内存的现象你没有描述,是白屏?还是卡顿?还是仅仅是通过内存监控发现占用很高?

我觉得既然是使用ng1的话,内存占用过高尝试减少代码中的不必要的watcher以提高性能,大体从这么几方面入手

  • 减少双向绑定(ng1.2以下请无视)=的使用,多使用单向绑定<

  • 减少$compile指令的使用

  • 减少$apply指令的使用(如果有多次重复的$apply尝试合并为一次)

  • 尽量不要在ngCheck里面做一些密集型运算

其他方面再看看css上面有没有因为过多的特效引起的重绘、重排,大体就这些了。

如有错误,还望指正。

优化点不一定要先从第三方jq控件开始,可以先从视图层的逻辑指令和模板表达式的使用方式开始,ng中每一个内置指令都会自动绑定一个$watcher的,使用方式决定性能,我举个例子,比如:

  • 是否在ng-repeat中使用了ng-if,而且是否有必要

  • component和directive中是否需要onDestroy逻辑

  • 尝试使用::操作符来优化一些不需要双向绑定的渲染逻辑,比如导航栏或者表格表头,这些数据一般都会只渲染一次,所以其实完全没必要使用双向绑定

之后再从第三方jq空间开始,比如:

  • 第三方控件是否过多使用了$compile和注册了冗余的$watcher

  • 在指令销毁生命周期是否对第三方控件进行了清理工作


查看完整回答
反对 回复 2019-03-29
  • 3 回答
  • 0 关注
  • 665 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信