0

我们将dailymus.es 服务构建为对移动设备友好,但在手机上访问它时遇到了一系列性能问题。

具体来说,它会在几个“页面”之后崩溃,并且当我们在页面上有很多内容时。

我怀疑我们有太多的事件处理程序和/或内存泄漏。您使用什么方法来消除 Backbone 的这些问题?

4

2 回答 2

2

我建议您使用Google Chrome 的 Developers Console测试您的网站。使用Profile选项卡检查堆的状态。

大多数主干模型/视图的泄漏是由于没有将 DOM 事件从视图中分离出来,也没有从模型中分离 (on) 事件。

确保覆盖主干视图的remove方法,并确保将 .off() 从设置为 .on() 的所有内容中删除。不要忘记在子视图上调用 remove。

要查找泄漏:

  1. 拍摄快照
  2. 运行您的代码以创建一个视图,然后将其删除
  3. 拍摄另一个快照
  4. 比较快照以查找创建但未释放的新对象。

有关 Google Chrome 堆分析器的更多信息

于 2012-10-23T22:33:47.157 回答
0

Backbone 浪费了大量内存,这对于移动设备来说是最难的事情。有很多技术可以在 DOM 元素上进行对象池化,更新元素而不是重新创建模板,限制加载图像直到最后一分钟,保持任何更新直到绘制周期之前。

如果内存管理得当,移动 Web 可以发挥出色的性能。PrefView 就是一个很好的例子,它可以在 iPad mini 上的长滚动列表上获得 50FPS。https://github.com/puppybits/BackboneJS-PerfView

于 2013-10-22T05:22:58.540 回答