2015-06-21 60 views
0

我有一個相當簡單的頁面,沒有太多數據(總共大約20k個文檔),而且非常緩慢(完整加載需要大約30-60秒)。而最讓我感興趣的是數據逐漸出現在頁面上。這是爲什麼?爲什麼這麼慢?流星頁面以某種方式增量加載,並且非常緩慢

這裏是頁.jade文件(它基本上只返回訂單名稱和訂單的職位名稱):

table(class="ui celled table") 
thead 
    tr 
    th Order name 
    th Position name 
tbody 
    each customerOrders 
    tr 
     td {{name}} 
     td 
    each customerOrderPositionModified 
     tr 
     td 
     td #{name} 

相應的.js文件是空的。

的router.js文件(鐵路由器)是這樣的:

this.route('/buyingList/:supplierUuid', { 
data: function() { 
    var supplierUuid = this.params.supplierUuid; 
    var retOrd = []; 
    _.each(orders.find({checked: true}, {name: 1, "customerOrderPosition.name": 1, "customerOrderPosition.quantity": 1, "customerOrderPosition.supplierUuid": 1 }).fetch(), function (order) { 
    var ret = []; 
    _.each(order.customerOrderPosition, function (pos) { 
     var good = Goods.findOne({uuid: pos.goodUuid}, {name:1, supplierUuid:1}); 
     if (good) { 
     if (good.supplierUuid == supplierUuid){ 
      var company = Companies.findOne({uuid: good.supplierUuid}, {name: 1, uuid: 1}); 
      var tt = {name: good.name, quantity: pos.quantity, companyName: (company ? company.name : "")}; 
      ret.push(tt); 
     } 
     } 
    }); 
    if (ret.length > 0) { 
     order.customerOrderPositionModified = ret; 
     retOrd.push(order); 
    } 
    }); 
    return { customerOrders: retOrd }; 
}, 
name: 'buyingList' 
}); 

集合的大小:

  • 訂單:5K文件
  • 商品:10K文件
  • 公司:5k文件

檢查的訂單數量(在第一個查詢中返回)約爲30.

我在做什麼錯?或流星應該是如此之慢?我對此表示懷疑。

感謝您的幫助。

+1

是否所有這些文檔都發布給客戶端(是自動發佈的)?如果每次發佈超過幾千個文檔,流星可能會非常緩慢。 –

+0

Autopublish已關閉,但所有這些文檔都已發佈,整個集合。那麼,我應該向出版物添加參數,以便只發布相關文檔? – Egor

+1

絕對是。一般來說,您的目標應該是隻發佈您需要的數據庫子集,以滿足您所在路由的UI要求。 –

回答

1

摘要

流星可能很慢,如果超過幾千文檔都在同一時間公佈。

推薦

修改您的出版商接受必要的參數,只發布,你需要滿足您的航線上的UI要求的數據庫的子集。