我正在使用 Grails 构建一个小型网页游戏,我觉得我错过了一个重要的概念。
游戏涉及 n*n
网格。每个玩家通过单击一个单元格来轮到自己。
代码需要三个 Groovy 类:Game
, Grid
和 Cell
.
我可以通过创建持久化所有游戏、网格和单元格数据的域类来制作这个游戏。但是我认为 网格数据非常不稳定并且仅仅保存几秒钟的网格状态并不是很有用。
我的问题是,如果我不想保留网格和单元格但仍可以访问它们的对象怎么办? Grails可以吗?
换句话说,我习惯于创建:
如何创建一个 Web 应用程序,其数据可以在服务器 RAM 中等待而不保存到数据库中,并在用户需要时随时访问?
最佳答案
您可以使用 grails session 持久化您的对象:
http://grails.github.io/grails-doc/2.3.4/ref/Servlet%20API/session.html
通常,大多数 Web 框架使用 session 来存储每个用户的数据。 grails 默认使用内存。开箱即用,您可以将其替换为基于 cookie 或数据库的存储。
如果您需要在用户之间共享状态,那么您可以将数据存储在 servletContext 中,它在您的所有 Controller 中都可用。这为您提供了一个存储全局变量的地方。一堆哈希表应该可以满足您的需求。
在服务器重新启动之间不会保存状态,但如果您需要,您可以使用数据库或以其他方式序列化您的对象。
如果您想要简单的持久性,请考虑使用类似 enhcache 的东西,http://Enhcache.org这使您可以很容易地将缓存持久化到磁盘。
关于grails - 将对象状态保存在 RAM 中而不持久化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651008/