android 微信是如何實(shí)現(xiàn)即時(shí)更新好友頭像的
問(wèn)題描述
微信好友的頭像肯定是做緩存的,那么好友頭像修改后,用戶(hù)這邊是如何實(shí)現(xiàn)立即就能看到修改后的頭像的呢?
問(wèn)題解答
回答1:如果要做到實(shí)時(shí)更新:就需要使用推送,A修改頭像之后,通知服務(wù)端,服務(wù)端再對(duì)A的好友進(jìn)行推送通知更新A的頭像。
回答2:先拉取的肯定是頭像url啊,本地緩存是根據(jù)url做的,本地每次都拉取頭像url然后通過(guò)加載模塊去加載的時(shí)候會(huì)判斷當(dāng)前緩存的圖片是否與此url一致,不一致才會(huì)通過(guò)新的url去下載。
回答3:數(shù)據(jù)庫(kù)中保存一個(gè)字段:上次頭像修改時(shí)間.
回答4:推測(cè)一下,括號(hào)里的過(guò)程是瞎猜的:用戶(hù)A上傳新頭像→服務(wù)器處理新頭像→將新頭像URL存儲(chǔ)到用戶(hù)表的某個(gè)字段里,記載更改時(shí)間(→同步頭像到CDN→更新用戶(hù)表的頭像URL字段,記載更改時(shí)間)→服務(wù)器向在線(xiàn)的客戶(hù)端發(fā)推送→客戶(hù)端更新頭像。
回答5:猜測(cè)一下,可以設(shè)置一個(gè)標(biāo)識(shí)字段,默認(rèn)為0,用戶(hù)更新頭像時(shí)把它置為1,在推送消息或定期同步時(shí),同時(shí)推送這個(gè)標(biāo)識(shí)。手機(jī)在處理消息或定期同步聯(lián)系人信息的同時(shí),判斷這個(gè)標(biāo)識(shí),如果標(biāo)識(shí)為1,說(shuō)明好友上傳了新頭像,這時(shí)候再GET請(qǐng)求拉取新頭像并緩存在本地,同時(shí)更新服務(wù)器端標(biāo)識(shí)為0,防止下一次同步時(shí)重復(fù)請(qǐng)求頭像。(PS:只是一點(diǎn)個(gè)人的想法。)
相關(guān)文章:
1. 編輯成功不顯示彈窗2. 怎么php怎么通過(guò)數(shù)組顯示sql查詢(xún)結(jié)果呢,查詢(xún)結(jié)果有多條,如圖。3. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法4. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?5. sql語(yǔ)句 - 如何在mysql中批量添加用戶(hù)?6. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)7. 跨類(lèi)調(diào)用后,找不到方法8. 為什么php修改數(shù)據(jù)無(wú)法同步到數(shù)據(jù)庫(kù),只是當(dāng)前頁(yè)面修改成功?9. phpstady在win10上運(yùn)行10. mysql - 表名稱(chēng)前綴到底有啥用?
