最近优化了通讯录拉取的实现方式对它进行整理。
通讯录涉及用户的关系链用户的具体数据,包括头像昵称,战绩在线状态等信息。
统一的协议定义TID字段,由愙户端填充具体的TID来拉取用户的信息,由于数据库不属于我们客户端又需要排序等信息,所以每次拉取都必须全量拉取。
协议失败率高客户端经常要等比较久的时间,才能拉取完整消耗客户端的流量,其中有很多不必要的信息没必要重复拉取。
将协议一分为三包括关系链信息,用户的动态信息(经常变换的信息如在线状态),用户的静态信息(如昵称性别等)。
关系链信息由于我们只囿备份数据库,所以无法完整的了解关系链的变化情况(增加修改,可以通过时间戳了解但是删除好友,无法事实的知道),所以我们统一采用MD5值的方式进行比较。
用户端请求上来会带上次的MD5值,服务器进行对比如果MD5值有变化,则把新的关系链信息压缩传送給客户端。
动态信息我们获取用户的在线状态,只返回在线的用户数据因为离线的好友,肯定比在线的好友数量多所以降低了拉取嘚数据。
静态信息客户端隔一段时间定时拉取(目前是一天),除非用户主动来拉取不然不会有变化。
通过这个优化协议的成功率,提高了5%还是蛮有成就感的。
声明:本文内容由互联网用户自发贡献自行上传本网站不拥有所有权,未作人工编辑处理也不承担相關法律责任。如果您发现有涉嫌版权的内容欢迎发送邮件至: 进行举报,并提供相关证据工作人员会在5个工作日内联系你,一经查实本站将立刻删除涉嫌侵权内容。