javascript - 在 Node.js 中存储静态数据的更快方法
问题描述
我写小游戏,有实体的静态数据
一个实体的示例数据(此数据在服务器工作时从未更改)
id:black-dog
type:feline
date:2020-04-22
location:hills
level:1
我有大约 5.000 个实体,我的游戏是在 SPA 客户端和带有 MySQL 数据库的 REST API node.js 服务器中编写的。
存储静态数据更快的方法是:
- 存储在 MySql 数据库中
或者
- 像 json 或 js 模块(数组)一样存储并在服务器开始数组时加载(当 json 时)
出于安全原因,服务器使用 JWT 令牌。
解决方案
你有几个相当独立的决定要做出:
您应该在服务器启动时加载这些数据还是每次都按需加载?
您是否应该在加载后将此数据缓存在内存中,这样您就不必再次获取它?
您应该将其存储在数据库中还是 JSON 文件中?
这些都是非常独立的决定。
如果数据不大(看起来很小),数据在服务器运行时不会更改,并且您在服务器请求期间经常需要它,那么很自然地加载一次并从那时起缓存它,所以您不必再次加载它。这将在一定程度上提高您的服务器性能。因此,如果这些条件为真,那么第 1 点和第 2 点的答案可能都是“是”。
将其存储在数据库中还是存储在 JSON 文件中,更多地取决于您希望在需要更改数据时如何管理这些数据。这个问题实际上与服务器性能无关,而是服务器的维护和配置以及最方便的问题。
推荐阅读
- r - 按组获取前 n 个值未按预期工作
- reactjs - 用 Jest 模拟 react-beautiful-dnd
- node.js - Nuxt - Auth 模块:服务器端经过身份验证的请求
- spring - dubbo 的注解@service 与 spring ioc
- kubernetes - 将 1 个容器的共享卷共享到 Kubernates 中的另一个容器中
- sql - 如何通过与当前日期的不同时间获取当前日期
- mysql - sql如何使用不同列的多个案例
- python - PySpark 在多个列上应用相同的 StringIndexer
- appium - Appium Java 客户端中的 NullPointerException
- c++ - C++ 数组和 strstrok