我在试着开发一个网络游戏。在游戏中,我有一个工具栏,它几乎显示在所有页面上。工具栏包含用户信息,例如:-硬币(现金)-级别名称-组名称-经验点-技能-通知
还有更多。
其中一些很少改变,但有些(比如经验、技能、通知或硬币)可以经常改变。
因此,我不想在每次有人重新加载页面时都查询数据库。我正在考虑将这些数据缓存到服务器的内存中(每次有变化时都会更新)。
有没有什么已知的好方法?或者我应该忘记并在每个页面加载时进行额外的2-3个SQL查询?
发布于 2014-08-09 22:45:29
“频繁更改”几乎不包括缓存。我认为有一种对优化的痴迷,这让人们想要缓存所有东西,但是你有一个数据库是有原因的,有时查询它是完全可以接受的。
但是,您可以做的是缓存部分。像Level这样的东西通常不会那么频繁地改变,因为从一个到下一个需要一段时间。它可以被缓存,当级别改变时,只需破坏缓存,这样它就会被强制重新加载。像Coins这样的其他东西,用户应该总是有一个最新的和准确的计数。显然,你必须做出这些决定。
总而言之,如果用户应该总是有一个准确的东西显示计数,那么你就不能缓存它。只要继续做你需要做的查询,然后继续前进。
发布于 2014-08-10 09:05:05
这是单用户游戏还是多用户游戏?如果这是一个多用户游戏,那么你必须有某种类型的玩家状态,为游戏中所有当前活跃的玩家保存状态,这是获取这些信息的完美位置。如果是单用户游戏,那么您可能希望在服务器上保留尽可能少的状态,以便更有可能从磁盘加载它,或者使用分布式缓存系统。
这里的问题是,我们真的不能告诉你该做什么,因为所有这些都取决于太多的因素……你只需要在进行的过程中弄清楚这一点。
我的建议是,不要过早地认为你需要优化一些东西。只要按照你认为你能做到的方式去做,如果你需要更好的性能,那就以后再考虑吧。
https://stackoverflow.com/questions/25217809
复制相似问题