[优化]缓存分页和版本号
1 背景
当服务端返回给客户端的数据量比较大,而且大部份数据不经常修改。那么可以采取客户端缓存和版本号机制。
例如:游戏中,读取道具配置(脚本热更方式除外,有些配置或数据是不能热更的)。配置不存在客户端,而是通过调用接口,返回给客户端的方式。刚开始时,可能配置表中只有五十个道具,随着时间的变化,道具数据越来越多。返回的数据也会越来越多。假如最后增加到五百个,那么数据量会非常非常大。一次性返回五百个道具,可能数据长都超过了网络buffer限制,那么也发送不过去。此时,可以采用缓存分页和版本号机制。
解决方法:每次最多返一百条(分页),每次请求带道具版本号过来(版本号),数据(缓存)在客户端。
2 解释
2.1 缓存
这里说的缓存,是客户端缓存,即把数据缓存在客户端,下次软件或APP重启,先读取缓存中的数据,然后再通过版本号,向服务端请求最新的数据。
2.2 版本号
版本号,是每条记录加一个版本号version ,这个版本号的目的是,当数据修改时,version加1(手动配置修改),或者修改时间(程序修改建议用修改时间,每次更新时就不用考虑以前的version是多少)。
如:数据格式为:
itemid:{“itemid”:XXX,”item”:XXXX,........, “version”:1}
目的:如果客户端给出的版本号和服务端现有的版本号不同,说明修改过,则返回道具的所有信