我们将dailymus.es 服务构建为对移动设备友好,但在手机上访问它时遇到了一系列性能问题。
具体来说,它会在几个“页面”之后崩溃,并且当我们在页面上有很多内容时。
我怀疑我们有太多的事件处理程序和/或内存泄漏。您使用什么方法来消除 Backbone 的这些问题?
我们将dailymus.es 服务构建为对移动设备友好,但在手机上访问它时遇到了一系列性能问题。
具体来说,它会在几个“页面”之后崩溃,并且当我们在页面上有很多内容时。
我怀疑我们有太多的事件处理程序和/或内存泄漏。您使用什么方法来消除 Backbone 的这些问题?
我建议您使用Google Chrome 的 Developers Console测试您的网站。使用Profile选项卡检查堆的状态。
大多数主干模型/视图的泄漏是由于没有将 DOM 事件从视图中分离出来,也没有从模型中分离 (on) 事件。
确保覆盖主干视图的remove方法,并确保将 .off() 从设置为 .on() 的所有内容中删除。不要忘记在子视图上调用 remove。
要查找泄漏:
Backbone 浪费了大量内存,这对于移动设备来说是最难的事情。有很多技术可以在 DOM 元素上进行对象池化,更新元素而不是重新创建模板,限制加载图像直到最后一分钟,保持任何更新直到绘制周期之前。
如果内存管理得当,移动 Web 可以发挥出色的性能。PrefView 就是一个很好的例子,它可以在 iPad mini 上的长滚动列表上获得 50FPS。https://github.com/puppybits/BackboneJS-PerfView