2017-08-03 135 views
-1

我正在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分鐘的時間來加載頁面,最後控制檯記錄數據,有時我只是得到'Google沒有響應'的警報,我不得不強制退出。

什麼是更有效的方式加載數據到應用程序,以避免這種非常緩慢的加載時間?任何幫助將不勝感激。

非常感謝,

回答

1

限制數據的發佈到客戶端的數量。

要麼只發布統計信息收集或「延遲加載」文檔的某些字段 - 要將大量文檔參數傳遞給發佈,並使用find的limit選項僅將多個文檔發送給客戶端。

或者,根據需要在服務器上編譯數據,並僅將編譯後的數據發送到客戶端。

更多具體的例子不知道集合的性質不能給出。

+1

如果您認爲這些解決方案可能有效,我可以提供片段來演示其實施。 –

+0

感謝您的回答Seb。我的問題是應用程序中需要提供給我的所有文檔,因此只發布部分數據量不適合我。懶惰加載聽起來像是一個合適的選擇,如果你有一個例子,我可以看到這將是偉大的!謝謝 – GBT97

+1

這裏有個很好的例子(https://www.packtpub.com/mapt/book/web_development/9781783988129/4/ch04lvl1sec41/lazy-loading-posts)。它有幾個快速部分,在頁面底部有一個「下一部分」按鈕。這是否清楚地解釋了模式? –