Performance backbone.js:检索构建集合的模型的较小版本
我正在尝试构建一个api来在主干中创建一个集合。我的模型名为Performance backbone.js:检索构建集合的模型的较小版本,performance,api,backbone.js,Performance,Api,Backbone.js,我正在尝试构建一个api来在主干中创建一个集合。我的模型名为log,具有以下(缩短的)属性(格式为getLog/): 我需要创建一个集合,因为我有很多日志,我想在列表中显示它们。用于创建集合的api(getAllLogs)需要30秒才能运行,这会减慢运行速度。它返回的格式与apigetLog/相同,但在一个数组中,数据库中的每个日志对应一个元素 为了加快速度,我多次重建api并将其优化到极限,但现在我达到了30秒,这仍然很慢 我的问题是,是否有可能在一个集合中填充一个模型的实例,而不包含该模型中
log
,具有以下(缩短的)属性(格式为getLog/
):
我需要创建一个集合,因为我有很多日志,我想在列表中显示它们。用于创建集合的api(getAllLogs
)需要30秒才能运行,这会减慢运行速度。它返回的格式与apigetLog/
相同,但在一个数组中,数据库中的每个日志对应一个元素
为了加快速度,我多次重建api并将其优化到极限,但现在我达到了30秒,这仍然很慢
我的问题是,是否有可能在一个集合中填充一个模型的实例,而不包含该模型中的所有信息,只是显示列表所需的一部分。这将提高加载集合和显示列表的速度,而在后台我可以继续加载所有其他属性,或者只加载我真正需要的元素
在我的情况下,模型将仅加载以下信息:
{
'id': string,
'distance': float
}
所有其他属性都可以稍后加载
我怎么做?这是个好主意吗
谢谢 一种方法是使用
map
获得缩短的模型。类似这样的操作会将具有所有属性的主干.Collection
集合“Collection”转换为仅具有“id”和“distance”的集合:
一幅精美的插图。
如果可以在模型中填充模型实例,而不包含模型中的所有信息,那么当然可以。为什么不呢?你能给我举个例子吗?我现在没看到。。。谢谢你到底想做什么?你想先得到短模型,然后让每个模型加载它自己的数据吗?@McGarnagle我现在明白你的意思了。。。经过一段时间的努力,我终于理解了主干中集合和模型的本质。当然有可能!!!啊!如果getAllLogs需要30秒,而你的应用程序需要30秒多一点,那么在主干中删除字段如何加快应用程序的速度?您需要重新编写API来过滤结果或对结果进行分页,以便可以立即开始加载数据块。
{
'id': string,
'distance': float
}
var shortCollection = new Backbone.Collection(collection.toJSON().map(function(x) {
return { id: x.id, distance: x.distance };
}));