Meteor为几个模板加载一次静态数据

时间:2016-02-04 13:34:59

标签: performance meteor static publish-subscribe flow-router

我正在使用meteor和FlowRouter。我有一个国家行政区划的集合,数据大约是2000个文件。我在几个路线中读取了这些数据,所以每当我访问使用这些数据的其中一条路线时,我都会订阅同一个集合。

这导致性能下降和资源浪费。鉴于此集合没有变化,是否有任何方法可以加载或订阅此数据一次并使其可用于整个应用程序或特定路由?

也许将数据保存在settings.json中并将其作为对象使用会更好?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要在路由之间保持订阅活动。您可以使用此包(由与FlowRouter相同的作者编写,因此它们可以很好地协同工作):

https://github.com/kadirahq/subs-manager

或者,创建一个Meteor方法以返回数据并将其保存在Session中。在这种情况下,它不会被动反应,因此取决于您的需求。

答案 1 :(得分:0)

您在路由外部进行的任何订阅都将位于全局范围内,这意味着该订阅的数据随处可用。您需要做的就是在您网站的根布局文件中设置订阅,然后该数据将始终保存在您当地的minimongo商店中。

Todo app example here中的Todo列表集合就是一个例子,这是该示例中的代码:

Tasks = new Mongo.Collection("tasks");

if (Meteor.isServer) {
  // This code only runs on the server
  Meteor.publish("tasks", function () {
    return Tasks.find();
  });
}

if (Meteor.isClient) {
  // This code only runs on the client
  Meteor.subscribe("tasks");

然后,您可以像平常一样查询本地数据。