2012-03-08 73 views
0

我正在构建我的第一个站点,使用这个框架,我正在重建一个我在PHP + mySQL中完成的网站,并希望了解一些关于性能的内容......我的网站,我有两种内容:nodeJS,mongoDB,express,eJS - 关于内存缓存的意见

  • 博客文章(该网站的2段) - 这些都倾向有一天能和成千上万的记录,并且更经常更新
  • 静态( ):这是我保存在数据库中的信息,比如站点部分的数据(标题,元标记,标题图片URL,固定html内容,包含在该部分中的javascript和css文件名),这些信息很少更新,并且非常小在尺寸方面。

虽然我在学习nodeJS的基础知识,但我开始考虑改进网站性能的一种方法,但是我无法用PHP做到这一点。所以,我正在做的是:

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

我想知道的是,如果应该增加性能,直接在内存中处理对象,或者如果对数据库的持续查询可以工作得一样好,甚至更好。

任何支持您的答案的文档将不胜感激。

谢谢

回答

1

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

2

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

所以,只要没有内存争用导致数据被换出,并且它不太适合放入物理RAM,那么对数据库的查询应该是非常快的(在子毫秒范围内,一旦你有你的数据集在最初分页)。

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