如微信, qq 等更新头像,当用户 A 修改完头像后,用户 B 立马能够看到其更新的头像。当我们的 app 需要头像及时更新的话,该怎么处理呢?目前我想到的方案是:
- 服务器主动推送
- 每次 url 请求则查询头像,目前存入 redis,但如果大量 request,则查询 N 次 redis ,觉得不可取。(舍弃)
- 头像存入,更新时则批量更新,如设计评论功能,头像存入评论 model 中,更新头像时则更新所有相关评论表中存入的头像。(如果数据量太大且写大于读时则该方案也不可取,舍弃)
- 不存任何头像信息,以用户 userId 做统一标示,如 http://.....1001.jpg, 每次读取评论列表时不用做查询,直接通过 userId 构造头像 url ,更新头像则相当于
mv
操作,保证数据最新,但是客户端有缓存,如一周,无法及时更新。如果上传头像时构造 version,则在请求用户头像时,必须查询对应的 version.(舍弃)
觉得上述方案都有缺陷,不可取。我想要的是:
1. 获取头像时尽量减少查询操作
2. 及时更新,一变俱变
希望有相关经验者可以不吝赐教,谢谢。