我正在进行我的第一个Meteor项目--完成了80%的应用程序,接管了其他人的代码。
我们有一个很大很复杂的对象模型,有点像:
something: { ... }
attachments: [ {...}, {...}, ...]
another-thing: { ... },
....
它是使用以下方式加载的(因此我们使用的是LocalCollection.Cursor
而不是获取):
Inspections.findOne({_id: inspection_id})
此对象填充一个模板,该模板被分成几个单独的组件模板。
在其中一个组件模板中,用户可以更新各种属性。例如,选择或取消选择附件:
Object.attachments[0].selected = true;
然后我们更新如下(其中updatedAttachments
是更新后的附件数组):
InspectionOrders.update({ _id: inspection._id }, {
$set: {
attachments:updatedAttachments
}
});
问题是附件(和一些其他属性)从一个可以花一段时间的其他数据中加载一堆数据。更改select
状态需要3-4秒才能重新呈现,因为所有这些小附件都将再次下载。
我的问题:
我尝试在{{#isolate}}
中扭曲模板的部分内容,但没有什么不同。
编辑:
数据结构是这样的:
InspectionOrder
|
|- Attachments [file names]
|
|- Findings [keys]
加载页面或更新InspectionOrder
时。重新下载所有附件(图像文件),并再次填充所有发现(使用引用键)。
问题不在于更新的速度。所有这些数据的重新加载并没有改变。
发布于 2013-12-16 14:32:35
不看数据,我有点不清楚问题出在哪里,但以下是一些你可以尝试的东西:
更新较少的数据
您可以只更新更改的属性,而不是设置整个附件数组。例如:
InspectionOrders.update({_id: inspection._id}, {$set: {"attachments.0.selected": true}});
在给定文档有大量附件的情况下,这会有所帮助。这对于DB来说执行起来更快,但是,我不清楚服务器是否会将整个文档发布回用户。也就是说,这可能会有所帮助,但可能不是一场大胜利。
发布较少的数据
在服务器上,您可以在发布字段时尝试从InspectionOrders
中选择性地删除字段。例如:
Meteor.publish('inspectionOrders', function() {
return InspectionOrders.find({}, {
fields: {'attachments.hugeBinaryFile': 0}
});
});
如果您只是在每个文档中发布大量额外的数据,这会有所帮助。如果您将较少的数据放在线路上,您的文档将更快地同步。
https://stackoverflow.com/questions/20621038
复制相似问题