在节点中提供文件与数据库的内容

时间:2015-12-25 08:35:20

标签: mysql json node.js server

我正在制作旧版静态网站的新版本,该版本长达50多个静态页面。

因此,我使用旧内容制作了一个JSON文件,因此新网站可以更多CMS(包含常用页面的模板),因此后端会变得更加干燥。

我想知道我是否可以通过JSON将这些内容提供给我的观点,或者我是否应该将它放在MySQL数据库中?

我正在使用Node.js,并且在Node I中可以将该JSON文件存储在内存中,因此当用户请求数据时不会进行文件读取。

这是否有正确的做法?服务缓存的JSON文件或通过MySQL提供性能差异吗?

有问题的文件大约是400Kb。如果文件大小与一个技术的选择相关吗?

7 个答案:

答案 0 :(得分:6)

为什么要添加另一层间接?只需直接从JSON提供意见。

答案 1 :(得分:3)

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

通过这种方式,您可以在JS中编写整个代码,包括MongoDB中的文档存储。 我应该指出我自己没有使用过MEAN。

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

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

当您正在实施该网站的新版本(使用CMS)时,它会建议它是实时的并且会受到增长或变化的影响,并且可能在MySQL中存储JSON会存储未来的问题。如果它只是一个文件,那么从文件系统拉出并将其缓存在RAM中可能更容易了。

之前我已经在MySQL中为我们的项目存储了JSON,除了一些利基案例之外,所有这些都最终分割了组件数据。

答案 2 :(得分:2)

400KB很小。所有数据都将存储在RAM中,因此I / O不会成为问题。

动态构建页面 - 除非插入广告,否则所有重型打击者都会这样做。 (我曾经在这样一家公司的工作中工作。有数百万页一直存在;只有少数网页是静态的#34;。

哪个CMS - 太多可供选择。选择一对听起来很容易的人;然后看看你是否能够适应它们。然后在他们之间挑选。

Linux / Windows的;阿帕奇/ Tomcat的/ nginx的; PHP / Perl的/的Java / VB。同样,您的舒适度是这个小网站的重要标准;他们中的任何一个都可以完成任务。

哪里可能出错?我确定你已经点击了渲染速度很慢的网页。所以,显然有可能走错方向。你已经开关了;如果您的决定结果不尽如人意,请准备好从现在开始一年或两年换档。

避免任何过于沉重的EAV(键值)模式的CMS。它们可能适用于400KB的数据,但它们很难扩展。

答案 3 :(得分:2)

通常,数据库用于提供频繁更改的动态内容,记录具有一对多或多对多关系,您需要根据各种条件查询数据。

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

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

  1. 启动时服务器内存中的Cache和Gzip静态文件(html,js,css,jpg)。这可以使用像connect-static
  2. 这样的npm包轻松完成
  3. 通过设置正确的响应标头来使用客户端的浏览器缓存。一种方法是在Express路由定义中添加maxAge标头,即:
  4.   

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

    Here是关于浏览器缓存的好文章

答案 4 :(得分:0)

如果您的数据大小将来不会增长,那么直接从RAM本身提供json是一个很好的做法。但如果将来数据增加,那么它将成为最糟糕的应用案例。

答案 5 :(得分:0)

如果您不希望添加(m)任何新页面,我会选择最简单的解决方案:将JSON读入内存,然后从内存中提取。 400KB的内存非常少。

无需涉及数据库。当然,你可以做到,但在这里有点过头了。

答案 6 :(得分:0)

我建议在构建时生成静态html内容(使用grunt或..)。如果要应用更改,请触发构建并生成静态内容并进行部署。