Node.js 缓存来自MongoDB的数据

Node.js 缓存来自MongoDB的数据,node.js,mongodb,caching,express,mlab,Node.js,Mongodb,Caching,Express,Mlab,我正在尝试使用node.js、express.js以及jade和mongodb(托管在mongolab.com上)创建自己的博客系统。我想在一页上列出数据库中存储的所有帖子。在添加更多帖子后,我担心页面加载速度,因为每次页面刷新时我都会联系mongodb 我的问题是:每次页面刷新时从数据库获取数据可以吗?或者如何将这些数据存储到缓存的某个位置?或者因为这些数据不经常更改,有没有更快的方法?关于MongoDB上的查询缓存,官方文档说: MongoDB将最近使用的数据保存在RAM中。如果您已经为查询

我正在尝试使用node.js、express.js以及jade和mongodb(托管在mongolab.com上)创建自己的博客系统。我想在一页上列出数据库中存储的所有帖子。在添加更多帖子后,我担心页面加载速度,因为每次页面刷新时我都会联系mongodb


我的问题是:每次页面刷新时从数据库获取数据可以吗?或者如何将这些数据存储到缓存的某个位置?或者因为这些数据不经常更改,有没有更快的方法?

关于MongoDB上的查询缓存,官方文档说:

MongoDB将最近使用的数据保存在RAM中。如果您已经为查询创建了索引,并且工作数据集适合RAM,那么MongoDB将从内存中提供所有查询

MongoDB不会缓存查询结果以返回相同查询的缓存结果

因此,根据您的工作负载和硬件资源,由于上面的第一句话,某些查询的命中率可能会很高


但是,考虑在你的站点前面有一个缓存层,比如CDN,或者甚至一些NGIX或VALNIX的基本缓存。在我看来,这将是适合您的解决方案,而不仅仅是依赖数据库。

关于MongoDB上的查询缓存,官方文档说:

MongoDB将最近使用的数据保存在RAM中。如果您已经为查询创建了索引,并且工作数据集适合RAM,那么MongoDB将从内存中提供所有查询

MongoDB不会缓存查询结果以返回相同查询的缓存结果

因此,根据您的工作负载和硬件资源,由于上面的第一句话,某些查询的命中率可能会很高


但是,考虑在你的站点前面有一个缓存层,比如CDN,或者甚至一些NGIX或VALNIX的基本缓存。在我看来,这将是适合您的解决方案,而不仅仅是依赖数据库。

这些答案,特别是问题1,在很大程度上取决于您的网页/应用程序的要求。最大的问题是,页面多久刷新一次?如果这是一个有100个并发用户的站点,那么缓存就没有10000个并发用户那么重要了。是否对页面加载时间有速度要求?MongoDB自己对最近请求的文档进行内存缓存。但是,当您对数据库的延迟较高时,在node.js上缓存可能会为您节省一些毫秒的页面加载延迟。这些答案,特别是问题1,在很大程度上取决于您的网页/应用程序的要求。最大的问题是,页面多久刷新一次?如果这是一个有100个并发用户的站点,那么缓存就没有10000个并发用户那么重要了。是否对页面加载时间有速度要求?MongoDB自己对最近请求的文档进行内存缓存。但是当您对数据库有很高的延迟时,在node.js上缓存可能会为您节省一些毫秒的页面加载延迟。