在Next.js中存储请求之间的数据(服务器端)

c3frrgcw  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(92)

我正在Next.js中开发一个小项目,这是一个游戏。我想添加一个需要大量请求的战斗系统。通常情况下,我会使用WebSockets,但由于无服务器的限制,这并不可行,我不想设置一个单独的示例。目前,我将会话期间的数据存储在一个特殊表中的数据库中-游戏中的战斗。
在Next.js中,在HTTP请求之间临时存储数据的正确和最佳方式是什么?

93ze6v8z

93ze6v8z1#

关于储存:

  • 如果您想在页面刷新时清除数据,请使用useState
  • 如果要在关闭选项卡或导航到新域时清除数据,请使用sessionStorage
  • 如果希望数据在关闭窗口时保持不变,请使用localStorage
  • 如果你想要一个更丰富的方式来存储数据,使用IndexedDB

如果你只是指缓存本身,那么如果你想避免从服务器端重新加载数据,那么你有几个选择:

  • 如果你想在每次加载页面时获取数据,可以使用getServerSideProps。你可以使用LRU缓存或类似的缓存来缓存服务器端的函数调用。
  • 如果你想在构建时获取数据,请使用getStaticProps
  • 如果你想在一个页面上的操作的生命周期内的不同时间获取数据,使用swr。你可以使用useEffect来做到这一点,但如果你的数据是可缓存的,swr更好。

我认为在这种情况下,你应该使用IndexedDB来存储,并使用swr来与你的后端API对话,特别是如果你正在做一系列不同的请求。swr速度超快,可以让你轻松地进行缓存。

相关问题