流星 - 使用大型数据集缓慢加载

时间:2017-08-03 17:52:44

标签: javascript mongodb meteor

我在MongoDB中处理大量数据并在Meteor应用程序中使用它。但是,数据的大小导致网页加载速度极慢。

该集合大小约为17MB,包含84,000个文档。

Collection

使用发布/订阅方法我有以下代码:

进口 - >两者 - > 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;警惕,我被迫强行退出。

将数据加载到应用程序中以避免加载时间非常慢的有效方法是什么?任何帮助将不胜感激。

非常感谢,

1 个答案:

答案 0 :(得分:1)

限制您发布到客户端的数据量。

要么只发布统计信息集合的某些字段,要么发布“延迟加载”文档 - 将大量docs参数传递给发布,并使用find的limit选项将该许多文档发送给客户端。< / p>

或者,根据需要在服务器上编译数据,并仅将编译后的数据发送到客户端。

如果不了解集合的性质,就无法提供更具体的例子。