首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在节点中从文件和数据库中服务内容

在节点中从文件和数据库中服务内容
EN

Stack Overflow用户
提问于 2015-12-25 08:35:19
回答 7查看 3.1K关注 0票数 13

我正在制作一个新版本的旧静态网站,成长为一个50+静态页面。

所以我用旧的内容制作了一个JSON文件,这样新网站就可以更多的CMS (普通页面的模板),这样后端就会变得更干燥。

我想知道我是否可以从JSON中将该内容提供给我的视图,或者是否应该将其放在MySQL数据库中?

我使用的是Node.js,在Node中,我可以将该JSON文件存储在内存中,这样在用户请求数据时就不会进行文件读取。

有正确的做法吗?在为缓存的JSON文件提供服务还是通过MySQL提供服务时,它们之间是否存在性能差异?

所讨论的文件大约为400 is。如果文件大小与一种技术与另一种技术的选择相关?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-01-03 03:01:22

通常,数据库用于服务频繁变化的动态内容,记录具有一对多或多到多的关系,您需要根据各种标准查询数据。

在您所描述的情况下,您似乎可以接受缓存在服务器内存中的JSON文件。只要确保在文件内容更改时更新缓存,即重新启动服务器、通过http请求触发缓存更新或在文件系统级别监视文件即可。

除此之外,您还应该考虑在服务器和浏览器上缓存静态文件,以获得更好的性能。

  1. 启动时在服务器内存中缓存和Gzip静态文件(html、js、css、jpg)。使用像连接-静态这样的npm包可以很容易地做到这一点。
  2. 通过设置适当的响应头来使用客户端的浏览器缓存。一种方法是在Express路由定义中添加maxAge头,即:

app.use "/bower",express.static("bower-components",{maxAge: 31536000})

这里是一篇关于浏览器缓存的好文章。

票数 5
EN

Stack Overflow用户

发布于 2015-12-27 09:14:53

为什么要增加另一层间接?只需直接从JSON提供视图即可。

票数 6
EN

Stack Overflow用户

发布于 2015-12-30 11:39:29

如果您已经将视图存储为JSON并使用Node,则可能值得考虑使用平均堆栈(MongoDB、Express、MongoDB、Node):

  • http://meanjs.org/
  • http://mean.io/

这样,您就可以在JS中对整个过程进行编码,包括MongoDB中的文档存储。我应该指出我自己没有用过刻薄。

MySQL可以存储和服务JSON没有问题,但是由于它不解析JSON,所以它非常不灵活,除非您将它拆分成组件,并且文档中的索引几乎是不可能的。

您是否“应该”这样做完全取决于您的个人项目,以及它是否是/如何它有可能发展。

当您正在实现该网站的新版本(使用CMS)时,这意味着它是实时的,并且会受到增长或变化的影响,也许在MySQL中存储JSON会为将来带来问题。如果它真的只是一个文件,那么从文件系统中提取并将其缓存到RAM中可能会更容易。

以前,我在MySQL中为我们的项目存储了JSON,除了少数几个小众案例之外,我最终将组件数据分开。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34461314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档