2015-06-21 30 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要求的数据库的子集。