我正在尝试开发网页游戏。在那个游戏中我有一个工具栏,几乎所有页面都显示。工具栏包含用户信息,例如: - 硬币(现金) - 水平 - 名称 - 团队名字 - 经验值 - 技能 - 通知
以及更多......
其中一些很少变化,但有些(如经验,技能,通知或硬币)可能会经常发生变化。
因此,每次有人重新加载页面时,我都不想查询数据库。我想将这些数据缓存在服务器的内存中(每次更改时都会更新它)。
有没有任何已知的好方法?或者我应该忘记并在每个页面加载时额外进行2-3次SQL查询?
答案 0 :(得分:2)
“经常更改”几乎不包括缓存。我认为对优化的痴迷让人们想要缓存所有东西,但是你有一个数据库是有原因的,偶尔查询它是完全可以接受的。
但是,您可以做的是缓存部分。像Level
这样的东西通常不会经常改变,因为从一个到另一个需要一段时间。这可以被缓存,并且当级别改变时只需要缓存高速缓存就足够了,这样它就会被强制重新加载。其他内容如Coins
用户应始终拥有最新且准确的计数。显然,你必须做出这些决定。
不管多长时间,如果用户应该始终准确显示该事物,那么您根本无法对其进行缓存。继续进行您需要做的查询并继续前进。
答案 1 :(得分:1)
这是单用户游戏还是多用户游戏?如果它是一个多用户游戏,那么你将不得不为游戏中所有当前活跃的玩家提供某种类型的玩家状态,这是一个完美的地方这个信息。如果它是单个用户游戏,那么您可能希望在服务器上保持尽可能少的状态,这样您就更有可能从磁盘或使用分布式缓存系统加载它。
这里的问题是我们无法真正告诉你该做什么,因为所有这些都取决于太多的因素......当你走的时候,你只需要弄明白这一点。
我的建议是,不要过早地认为你需要优化某些东西。只要你认为自己可以这样做,如果你需要更好的表现,那么以后就要担心。