nodeJS,mongoDB,express,eJS - 关于内存缓存的意见

时间:2012-03-08 11:20:02

标签: javascript caching node.js mongodb

我正在使用这个框架构建我的第一个网站,我正在重建一个我在PHP + mySQL中完成的网站,并希望了解一些性能...在我的网站中,我有两种内容:

  • 博客帖子(网站的两个部分) - 这些博客有一天总计成千上万的记录,并且经常更新
  • 静态(种类)数据:这是我保存在数据库中的信息,如网站部分的数据(标题,元标记,标题图像网址,固定的html内容,要包含在该部分中的javascript和css文件名),这是很少的更新后,它的尺寸非常小。

当我在学习nodeJS的基础知识时,我开始考虑一种提高网站性能的方法,这是我用PHP无法做到的。所以,我正在做的是:

当我运行应用程序时,静态内容全部加载到内存中,我有一个“模型”对象,用于存储数组的每个内容,有一个刷新该数据的方法,即管理员更新时某事,我调用refresh()来从数据库中获取新数据到该数组。通过这种方式,对于每个页面加载,应用程序直接查询内存中的对象,而不是查询数据库。

我想知道的是,是否应该提高性能,直接在内存中处理对象,或者对数据库的常量查询是否同样好或甚至更好。

非常感谢任何支持您答案的文档。

由于

2 个答案:

答案 0 :(得分:2)

就一般数据库性能而言,MongoDB会将您的工作集保留在内存中 - 这是它的基本操作方法。

因此,只要没有内存争用导致数据被换出,并且它不会太大而无法放入物理RAM,那么对数据库的查询应该非常快(在亚毫秒内)一旦你的数据集最初被分页,你可以使用范围。

当然,如果数据库位于不同的主机上,那么您需要考虑网络延迟等,但理论上您可以将它们视为相同,直到您有理由对其进行质疑。

答案 1 :(得分:1)

我认为不会有任何性能差异。首先,这个静态数据可能不是那么大(最多100条记录?),查询数据库并不是什么大问题。第二件事(更重要的是)大多数数据库引擎(包括mongoDB)都内置了缓存系统(虽然我不确定它们的工作原理如何)。第三件事是在内存中保存查询结果不能很好地扩展(对于大型网站),除非您使用Redis之类的存储引擎。这是我的看法,虽然我不是专家。