【发布时间】:2014-03-01 20:04:27
【问题描述】:
我有一个搜索字段,可让用户搜索书籍(过滤记录,使用 ember-data 检索)。
我发现从我的组件 (see jsbin) 中的 results 计算属性访问商店会导致在搜索字段中输入非常慢(在我的 PC 上很明显,在智能手机上很糟糕)。
Here is a screenshot 键入搜索查询时的时间轴窗格。显示的部分显示每次按键都会导致大量布局(搜索字段似乎在每次按键时重新呈现)。我还提供了exported timeline,您可以将其作为explained here 加载到您的开发工具中
我尝试在jsfiddle 中重新创建该问题,但它似乎工作得很好。不同之处可能在于,我在 jsbin 中使用的是固定装置,而在我的应用中,我从真实的 API 中检索数据。
我不明白是什么导致了这种行为。从我能提供的数据中可能很难得出任何结论,但是有人有什么想法吗?有没有人遇到过类似的性能问题?
2014-03-01 更新
我应该注意,只有在 results 计算属性包含对存储的调用时才会发生性能损失。如果我用任何其他东西替换它(比如只返回 [],或者一些随机异步方法——比如 $.get),它不会显示这个性能损失。
另外,我要明确一点(以防您没有阅读代码),results 计算属性不会在每次按键时调用,而是仅在提交搜索时调用。
【问题讨论】:
-
只是一个想法,但您可以检查网络请求选项卡,看看 Ember Data 是否在每次击键时都发出新的 GET 请求?
-
它没有。事实上,
results计算属性不会在每次按键时调用(仅在按下 enter 时)。我无法理解未调用的方法如何影响应用程序的性能。
标签: ember.js ember-data