【问题标题】:Meteor load static data once for several templatesMeteor 为多个模板加载一次静态数据
【发布时间】:2016-02-04 13:34:59
【问题描述】:

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

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

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

提前感谢您的帮助。

【问题讨论】:

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


【解决方案1】:

您需要在路由之间保持订阅处于活动状态。你可以使用这个包(与 FlowRouter 由同一作者编写,因此它们可以很好地协同工作)来做到这一点:

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

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

【讨论】:

  • 谢谢@tarmes,我去看看
【解决方案2】:

您在路由之外进行的任何订阅都将在全局范围内,这意味着来自该订阅的数据在任何地方都可用。您需要做的就是在您站点的根布局文件中设置订阅,然后该数据将始终保存在您本地的 minimongo 存储中。

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

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");

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

【讨论】:

  • 感谢您的回复@tomRedox
猜你喜欢
  • 2014-02-24
  • 2014-02-22
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2015-04-04
  • 2016-02-23
  • 2015-01-12
  • 2012-05-01
相关资源
最近更新 更多