我在MongoDB中处理大量数据并在Meteor应用程序中使用它。但是,数据的大小导致网页加载速度极慢。
该集合大小约为17MB,包含84,000个文档。
使用发布/订阅方法我有以下代码:
进口 - >两者 - > MyCollection.js:
import { Mongo } from 'meteor/mongo';
export const statistics = new Mongo.Collection('statistics');
服务器 - > Main.js:
import { Meteor } from 'meteor/meteor';
import { HTTP } from 'meteor/http';
import { statistics } from '/imports/both/MyCollection';
Meteor.publish('statistics', function publishSomeData() {
return statistics.find();
});
客户 - > Main.js:
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import { statistics } from '/imports/both/MyCollection';
import './main.html';
Template.application.onCreated(function applicationOnCreated() {
this.subscribe('statistics');
});
Template.application.onRendered(function applicationOnRendered() {
this.autorun(() => {
if (this.subscriptionsReady()) {
const statisticsData = statistics.findOne();
console.log(statisticsData);
}
});
});
就像我说这个方法有效并且控制台记录数据一样。但是,使用大约60mbps的互联网连接,加载页面大约需要2分钟,最后控制台记录数据,有时我只是得到“谷歌没有响应”#39;警惕,我被迫强行退出。
将数据加载到应用程序中以避免加载时间非常慢的有效方法是什么?任何帮助将不胜感激。
非常感谢,
答案 0 :(得分:1)
限制您发布到客户端的数据量。
要么只发布统计信息集合的某些字段,要么发布“延迟加载”文档 - 将大量docs参数传递给发布,并使用find的limit
选项将该许多文档发送给客户端。< / p>
或者,根据需要在服务器上编译数据,并仅将编译后的数据发送到客户端。
如果不了解集合的性质,就无法提供更具体的例子。