【问题标题】:angular.js - parse html function is taking 2000ms and much more [closed]angular.js - 解析 html 函数需要 2000 毫秒甚至更多 [关闭]
【发布时间】:2015-10-27 08:31:13
【问题描述】:

我正在尝试加快我的网站速度。这是我在 Timeline/Profile JS 中的 chrome 开发者工具中找到的。其中包含 150 个蓝色 Parse HTML(在屏幕中)。

这是加载时间的 50%。我使用平板电脑对其进行了测试,此功能甚至需要 15000 毫秒!我正在设置这样的路由提供程序:

var start = '<div class="important">';
var end = '</div>';
$routeProvider.when('/test', {
   template: start + 'some short text' + end
});

怎么了?网站的完整大小为500kb。它有 97 个作用域。

编辑:如果我在平板电脑上不使用角度测试网站,加载时间为 2.5 秒(正如我在上面指出的角度超过 18 秒)。我愿意为解决方案付费。

我还添加了我调试过的timeline data(在平板电脑上)。您可以在 Chrome 上查看时间线。打开开发者控制台(F12)。单击选项卡时间轴。右键单击此选项卡,然后选择加载时间线数据。

编辑 2:我正在使用angular-material,我认为这可能是问题所在,这可能是所有那些解析 html 的问题,因为有很多按钮。

【问题讨论】:

  • 请注意,parseHTML 调用是 Angular 生命周期的一部分。您使用 ng-repeat 的频率如何?
  • 只有一个 ng-repeat,当我参加那个测试时它是空的(0 项)(通常它大约有 5 项)
  • @dontHaveName 我认为除非有人遇到过同样的问题,否则很难在没有看到一些实际代码的情况下为您提供帮助。
  • @dontHaveName 实际上我在我的一个项目中遇到了一些 angularJS 性能问题。我们需要访问应用程序或至少查看代码以了解正在发生的事情。当您在单个视图中有超过 10000 个绑定时,可能会发生这种情况。 (由于在我们的案例中误用了自定义指令)
  • 站点有 97 个作用域,所以不能有更多的绑定,对吧?我编辑了我的问题,我认为这可能是角度材料的问题。因为每次我做类似 text 的事情可能是 1 parse html

标签: javascript angularjs angular-material


【解决方案1】:

你没有发布你的代码,但低于慢制造者:

  • 重排、重绘、解析HTML 过多
  • 脏检查缓慢
  • DOM 操作过多

下面的简短解决方案:

  • 对内联模板使用指令
  • 使用 $templateCache
  • 重用内存而不是分配新内存
  • 少用手表
  • 延迟元素创建
  • 防止大而复杂的 ng 重复(例如应用分页)
  • 防止来自一个页面的多个(初始)请求

哪里出错了?

使用 Chrome 开发人员栏以外的工具作为 Batarang 来调试和分析您的 angularjs 应用程序。从以下位置下载: https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk

在这里阅读更多:

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2015-04-01
    • 2011-01-10
    相关资源
    最近更新 更多