如何在 Meteor 中缓存数据?

2024-04-17

感谢大家! 最近我想在meteor上建立一个小型cms,但有一些问题

1、缓存、页面缓存、数据缓存等。

例如,当人们搜索某篇文章时

在服务器端:

 Meteor.publist('articles',function(keyword){
   return Articles.find({keyword:keyword});
});

在客户端:

Meteor.subscribe('articles',keyword);

没关系,但是…… 问题是,每次人们这样做时,它都会调用 mongo 查询,并降低性能, 在其他框架中使用常见的http或https,人们可以依赖squid或varnish之类的东西来缓存页面或数据,所以每次你路由到一个url时,你都会从缓存服务器读取数据,但是Meteor构建在socket.js或websocket上,而且我不知道如何通过套接字进行缓存......我尝试了清漆,但没有看到效果。 那么,它可能会忽略websocket吗?有没有一些方法可以缓存数据,在mongodb中,在服务器中,我可以添加一些缓存服务器吗?

2, chat

我看到聊天室的例子https://github.com/zquestz/simplechat https://github.com/zquestz/simplechat但与使用socket.js的暗示不同,这个例子将聊天消息保存在mongodb中,所以数据流是message->mongo->query->people,这也调用了mongo查询! 在socket.js中,只需将套接字保存在上下文(或服务器端缓存)中,这样数据就不会通过数据库。 我的问题是,Meteor 中是否有一个套接字接口,以便我可以消息->套接字->人员?如果不能,如聊天室示例那样,在生产环境中的性能如何(我发现它运行缓慢......)


使用 Meteor,您不必担心缓存 Mongodb 查询。 Meteor 会为你做到这一点。每有关数据和安全的文档 http://docs.meteor.com/#dataandsecurity:

每个 Meteor 客户端都包含一个内存数据库缓存。为了管理客户端缓存,服务器发布 JSON 文档集,然后客户端订阅这些文档集。当集合中的文档发生变化时,服务器会修补每个客户端的缓存。

[...]

订阅后,客户端将其缓存用作快速本地数据库,从而极大地简化了客户端代码。读取不需要到服务器进行昂贵的往返。它们仅限于缓存的内容:对客户端上集合中的每个文档的查询只会返回服务器正在发布到该客户端的文档。

因为 Meteor 确实会经常轮询服务器以查看客户端的缓存是否需要修补,所以您可能会时不时地看到这些轮询。但它们可能不是很大的请求。此外,由于 Meteor 的延迟补偿功能,当您更新数据源时,客户端会立即反映更改,而无需先等待服务器。这减少了用户对性能下降的印象。

如果您在 mongo 中有很多文档,并且仍然启用了 autopublish 包,您可能还会看到它们全部被获取。您可以通过删除它来解决这个问题meteor remove autopublish并编写代码仅发布相关数据而不是整个数据库。

如果您确实需要手动管理缓存,文档还介绍了这一点:

复杂的客户端可以打开和关闭订阅,以控制缓存中保存的数据量并管理网络流量。关闭订阅后,其所有文档都会从缓存中删除,除非另一个活动订阅也提供了相同的文档。

目前正在对 Meteor 进行其他性能改进,包括支持“大量客户端”的 DDP 级代理。您可以在以下位置查看更多详细信息:流星路线图 https://trello.com/board/meteor-roadmap/508721606e02bb9d570016ae.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Meteor 中缓存数据? 的相关文章

  • 使用 Webpack 进行缓存,索引源代码中的 [hash] 值,使用 React.js

    我正在构建一个同构应用程序 它完全是用react构建的 也就是说 html基础也在react中 我有我的根 html 作为应用程序组件 它看起来像这样 var AppTemplate React createClass displayNam
  • Rails 缓存数据库查询和最佳实践

    我网站上的数据库负载变得非常高 因此我需要缓存每小时被调用 1000 次且结果不变的常见查询 例如 在我的城市模型上 我执行以下操作 def self fetch id Rails cache fetch city id City find
  • 当我计划高效缓存多个值时,应该如何实现 Guava 缓存?

    我有一个带有 Guava 的 Java 类LoadingCache
  • 如何在流星模板中设置日期格式

    我需要以 mm dd yyyy 格式显示数据库中的日期 因为它以 ISO 格式保存在mongodb如何在模板中转换它 这是我的代码 Template templatename vname function return Posts find
  • 如何使用 Meteor Spacebars 模板动态渲染 HTML?

    假设我正在存储 div name div and div age div 在我的数据库中 然后我想获取第一个 HTML 字符串并将其呈现在模板中 gt template1 它只渲染第一个字符串 name 车把在里面 然后我想给出新生成的模板
  • 无法让 Azure 缓存正常工作。 “暂时出现故障,请稍后重试。”

    那么 今天我 安装了azure SDK 2 1 并且 使用单个 WorkerRole 创建了一个新项目 使用 NuGet 获取缓存包 将角色的缓存设置为 并置 在 app config 中将主机设置为 WorkerRole1 评论安全部分
  • 请求标头与响应标头

    我正在尝试将图像缓存在网站上 该图像由 PHP 提供服务 其中我使用适当的值设置缓存控制的响应标头 但这不是缓存图像 我认为这可能与具有无缓存缓存控制的请求标头有关 标题如下 响应头 Access Control Allow Origin
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic
  • 使用 Meteor 进行就地编辑:无法读取 null 的属性“parentNode”

    我已设置就地编辑network模型 有两个输入字段 分别是title和description模型的 当用户单击标题时 它会切换 h2 的标签 h2
  • NSURLCache 不缓存

    我正在使用 Xcode 6 1 6A1030 iOS7 和 iOS8 模拟器 NSURLCache 似乎没有缓存任何东西 我使用 Cache Control 标头 我的服务器返回带有 max age 6000 的 Cache Control
  • make_shared<>() 中的 WKWYL 优化是否会给某些多线程应用程序带来惩罚?

    前几天我偶然看到这个非常有趣的演示 http channel9 msdn com Events GoingNative GoingNative 2012 STL11 Magic Secrets作者 Stephan T Lavavej 其中提
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 是否可以调整AppFabric缓存服务器来存储更大的对象?

    当我假设将较大的对象图添加到缓存中时 我收到 AppFabric 缓存服务器错误 错误代码 子状态 连接已终止 可能是由于服务器或网络问题或序列化对象大小大于服务器上的 MaxBufferSize 请求的结果未知 我确信这不是网络问题 我能
  • 如何确定lru_cache所需的maxsize?

    如果我们创建一个类似返回斐波那契数列的递归函数 并使用lru cache 真正的总督是什么max size范围 很明显 我们在计算每一项时只需要最后两项 但是设置maxsize to 2并运行第一个1000计算需要很长时间才能完成 我尝试使
  • 了解新的 mongo id 并将其与 Iron-router 一起使用

    我有一个简单的帖子路线来寻找帖子 id 问题是pathFor助手创建这样的路径 ObjectID 52e16453431fc2fba4b6d6a8 我猜 mongoDB 插入已更改 现在 id对象在其内部包含另一个对象 称为 str 这是我
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co

随机推荐

  • 在测试环境 (Mac OS X) 中模拟较差的带宽?

    我们有一个定制的 Flash HTML5 视频播放器供我们网站上的用户使用 我目前正在为带宽 次优 的用户充实体验 基本上我们希望客户端代码能够检测到由于过度缓冲而导致的不良用户体验 我想在我的本地开发环境中测试这个 带宽不足 处理代码 有
  • 有没有办法在不同平台上测试phonegap构建应用程序

    所以我使用Android开发sdk开发了一个phonegap应用程序 我使用 Phonegap build 为 Simbian WebOS Windows iOS 和 Blackberry 构建我的项目 但我没有用于这些平台的设备来测试我的
  • 更改 MySQL 表以添加外键约束会导致错误

    问题 为什么在尝试更改具有外键约束的表时会出现错误 Details 我有1张桌子 HSTORY我将其用作所有其他特定历史表 即USER HISTORY BROWSER HISTORY PICTURE HISTORY 我还包括了PICTURE
  • 是否可以使用 __rmod__ 覆盖 str 的 % 行为?

    我想做 x doSomething y 对于任何 x 和任何 y 来说 这都很容易做到 参见下面的代码 但 x 是 str 的情况除外 有没有什么方法 例如添加特殊方法或引发特定错误 导致旧式字符串格式化失败 类似于 1 doSomthin
  • 实体框架多重聚合性能

    我有一个关于实体框架查询构建的问题 Schema 我有一个这样的表结构 CREATE TABLE dbo DataLogger ID bigint IDENTITY 1 1 NOT NULL ProjectID bigint NULL CO
  • 使用 Ransack 搜索值数组

    我是 Ransack 的新手 我遇到了 Ransack 未明确涵盖的案例 我基本上试图搜索一个值 但搜索到的值包含在一个数组中 CODE 最后还有这一段user rep code list cont这是用户的默认数组属性 目前看起来像这样
  • 如何在javascript函数中获取Table的所有td值

    我有一个数据表 其中显示子行展开折叠功能 它运行良好 但我想获取表的最后一个 td 的内容 现在我创建了一个函数 该函数在数据表中放置一些硬编码值扩大的地方 在那个地方我想得到那些 td 值 这是我发布的代码
  • 如何向JTable中插入数据?

    我编写此代码用于在表中显示字符串 但它没有显示并且没有任何效果 有什么问题吗 public pamnel initComponents String columnNames First Name Last Name Sport of Yea
  • ASP.NET MVC 和 Web 服务

    向我的 ASP NET MVC 项目添加 Web 服务是否会破坏 MVC 的整个概念 该 Web 服务 WCF 依赖于我的 MVC 项目中的模型层来与后端进行通信 因此在我看来 它需要成为 MVC 解决方案的一部分 我应该将其添加到控制器层
  • 让 Scala 在 .net 上运行的分步指南?

    我从未使用过 Net 框架 需要向某人证明 Scala 确实可以在 Net 上运行 我需要使用 Scala 进行 快速而肮脏 的 Net 设置 以处理一些现有的 JVM Scala 代码 我找不到这方面的分步指南 我将不胜感激一些这方面的资
  • 如何在 Xcode 中禁用一个文件的优化

    我的 Xcode 项目依赖于另一个库 当我使用以下命令构建项目时 这会导致项目出现错误 O3 option 这些错误仅存在于一个文件中 所以我想关掉 O3 该文件的选项 是否可以 打开目标 看下Build Phases 打开Compile
  • 向数据框添加行的有效方法

    由此question https stackoverflow com questions 28056171 how to build and fill pandas dataframe from for loop和其他人似乎不建议使用con
  • 如何在第一个选项卡验证完成后启用第二个选项卡

    我有包含以下字段的选项卡 div ul li a href tabs 1 Tab1 a li li a href tabs 2 Tab2 a li li a href tabs 3 Tab3 a li li a href tabs 4 Ta
  • 将字节转换为图像时出现错误“参数无效”

    我正在将字节转换为图像 但出现错误 参数无效 我正在粘贴我的代码 请检查代码并建议我做对还是错 Image arr1 byteArrayToImage Bytess 这就是函数 public static Image byteArrayTo
  • 为什么thread_local不能应用于非静态数据成员以及如何实现线程本地非静态数据成员?

    Why may thread local不适用于非静态数据成员 接受的答案这个问题 https stackoverflow com questions 10999131 can you use thread local variables
  • Solr 高亮显示

    我看到了这个帖子here https stackoverflow com questions 4058913 how to highlighting search results using apache solr with php cod
  • SAP Web IDE 显示有关 ES6+ 功能的错误

    for var items in selectedContexts var downloadModel parsed parsed items toString split 1 parsed items toString split 2 v
  • Gradle 发出错误“无法创建类型为‘AppPlugin’的插件”

    我正在尝试使用 gradle 创建一个简单的 android 项目 我在一台装有 Debian GNU Linux 7 wheezy 的计算机上工作 我遵循了中的建议Gradle 插件用户指南 Android 工具项目网站 http too
  • 如何将 Twitter 小部件集成到 Reactjs 中?

    我想将 Twitter 小部件添加到 React 中 但我不知道从哪里开始或如何做 我对 React JS 很陌生 下面是 HTML 版本的代码 div class Twitter a class twitter timeline href
  • 如何在 Meteor 中缓存数据?

    感谢大家 最近我想在meteor上建立一个小型cms 但有一些问题 1 缓存 页面缓存 数据缓存等 例如 当人们搜索某篇文章时 在服务器端 Meteor publist articles function keyword return Ar