如果这是一个新问题,请原谅我,因为我是一名试图学习全栈的前端开发人员。
我的节点应用程序每20分钟将记录插入一个MongoDB。
每次用户访问页面时查询数据库似乎都是不合逻辑的,因为数据库在20分钟的时间段内是相同的(直到我每20分钟插入一次新记录)。
我认为我可以将查询结果存储在对象或其他内容中,并且每20分钟更新一次此对象(每次插入新记录时,这是一个每20分钟运行一次的函数)。
我该怎么做呢?我需要这个全局变量吗?
这是一个好主意还是坏主意?为什么?
答案 0 :(得分:1)
如果您的查询被编入索引和/或快速,那么点击数据库可能就好了。另一种选择是拥有一个缓存层。如果你在原始node.js中这样做,你会给自己带来很多复杂性(以及可能的性能问题),所以我要远离它。如果你在另一个服务(redis,memcached)中做到这一点,除非查询复杂或缓慢,否则你可能不会看到很多性能提升。如果查询很复杂,您可以每20分钟重新生成一次结果并将其保存在mongo中的某个地方,然后从中运行查询。例如:
setInterval(regen_stats, 20 * 60 * 1000)
最重要的是数据库是要查询的,所以你不必开始从它们那里拿走东西,直到它停止执行(通常是由于查询的规模或复杂性)