我正在制作旧版静态网站的新版本,该网站长达50多个静态页面。
因此,我使用旧内容制作了一个JSON文件,因此新网站可以更多CMS(具有常用页面的模板),因此后端获得更多干。
我想知道我是否可以通过JSON将这些内容提供给我的观点,或者我是否应该在MySQL数据库中提供它?
我正在使用Node.js,并且在Node I中可以将该JSON文件存储在内存中,因此当用户请求数据时不会进行文件读取。
对此有正确的做法吗?提供缓存的JSON文件或通过MySQL提供性能差异?
有问题的文件大约是400Kb。如果文件大小与一个技术的选择相关?
通常,数据库用于提供频繁更改的动态内容,记录具有一对多或多对多关系,您需要根据各种条件查询数据。
在您描述的情况下,看起来您可以将JSON文件缓存在服务器内存中。只要确保在文件内容发生变化时更新缓存,即重新启动服务器,通过http请求触发缓存更新或在文件系统级别监视文件。
除此之外,您应该考虑在服务器和浏览器上缓存静态文件以获得更好的性能
- 启动时服务器内存中的Cache和Gzip静态文件(html,js,css,jpg)。这可以使用npm包轻松完成 连接静电
- 通过设置正确的响应标头来使用客户端的浏览器缓存。一种方法是在Express路由定义上添加maxAge头,即:
app.use“/ bower”,express.static(“bower-components”,{maxAge:
31536000})
这里 是一篇关于浏览器缓存的好文章
为什么要添加另一层间接?只需直接从JSON提供意见。
如果您已将视图存储为JSON并使用Node,则可能需要考虑使用MEAN堆栈(MongoDB,Express,Angular,Node):
这样你就可以在JS中编写整个代码,包括MongoDB中的文档存储。 我应该指出我自己没有使用过MEAN。
MySQL可以存储和提供JSON没有问题,但由于它没有解析它,它是非常不灵活的,除非你将它拆分成组件并且文档中的索引几乎是不可能的。
您是否应该这样做完全取决于您的个人项目以及它是否/可能如何发展。
当您正在实施该网站的新版本(使用CMS)时,它会建议它是实时的并且会受到增长或变化的影响,并且可能在MySQL中存储JSON会存储未来的问题。如果它只是一个文件,那么从文件系统拉出并将其缓存在RAM中可能更容易。
我之前已经在MySQL中为我们的项目存储了JSON,除了少数几个小众案例之外,最终还是分割了组件数据。
400KB很小。所有数据都将存在于RAM中,因此I / O不会成为问题。
动态构建页面 - 除非插入广告,否则所有重型打击者都会这样做。 (我曾经在这样一家公司的大学工作。有数百万页一直存在;只有少数是“静态的”。)
哪个CMS - 太多可供选择。选择一对听起来容易的人;然后看看你是否能够适应它们。然后在他们之间挑选。
Linux / Windows的;阿帕奇/ Tomcat的/ nginx的; PHP / Perl的/的Java / VB。同样,您的舒适度是这个小网站的重要标准;他们中的任何一个都可以完成任务。
哪里可能出错?我确定你已经点击了渲染速度很慢的网页。所以,显然有可能走错方向。你已经开关了;如果您的决定结果不尽如人意,请准备好从现在开始一年或两年换档。
避免任何过于沉重的EAV(键值)模式的CMS。它们可能适用于400KB的数据,但它们难以扩展。
如果您的数据大小将来不会增长,那么直接从RAM本身为json提供服务是一种很好的做法。但如果将来数据有所增加,那么它将成为最糟糕的应用案例。
如果您不希望添加(m)任何新页面,我会选择最简单的解决方案:将JSON读入内存,然后从内存中提取。 400KB的内存非常少。
无需涉及数据库。当然,你可以做到,但这里有点过分。
我建议在构建时生成静态html内容(使用grunt或..)。如果要应用更改,请触发构建并生成静态内容并进行部署。