微信好友的头像肯定是做缓存的,那么好友头像修改后,用户这边是如何实现立即就能看到修改后的头像的呢?
业精于勤,荒于嬉;行成于思,毁于随。
如果要做到即時更新:就需要使用推播,A修改頭像之後,通知服務端,服務端再對A的好友進行推播通知更新A的頭像。
先拉取的肯定是頭像url啊,本地快取是根據url做的,本地每次都拉取頭像url然後透過載入模組去載入的時候會判斷目前快取的圖片是否與此url一致,不一致才會透過新的url去下載。
資料庫中保存一個欄位:上次頭像修改時間.
推測一下,括號裡的過程是瞎猜的:用戶A上傳新頭像→伺服器處理新頭像→將新頭像URL儲存到用戶表的某個字段裡,記載更改時間(→同步頭像到CDN→更新使用者表的頭像URL字段,記載變更時間)→伺服器向線上的客戶端發送推送→客戶端更新頭像。
猜測一下,可以設定一個標識字段,預設為0,用戶更新頭像時把它置為1,在推播訊息或定期同步時,同時推送這個標識。 手機在處理訊息或定期同步聯絡人資訊的同時,判斷這個標識,如果標識為1,說明好友上傳了新頭像,這時候再GET請求拉取新頭像並緩存在本地,同時更新伺服器端標識為0,防止下一次同步時重複請求頭像。 (PS:只是一點個人的想法。)
如果要做到即時更新:就需要使用推播,A修改頭像之後,通知服務端,服務端再對A的好友進行推播通知更新A的頭像。
先拉取的肯定是頭像url啊,本地快取是根據url做的,本地每次都拉取頭像url然後透過載入模組去載入的時候會判斷目前快取的圖片是否與此url一致,不一致才會透過新的url去下載。
資料庫中保存一個欄位:上次頭像修改時間.
推測一下,括號裡的過程是瞎猜的:
用戶A上傳新頭像→伺服器處理新頭像→將新頭像URL儲存到用戶表的某個字段裡,記載更改時間(→同步頭像到CDN→更新使用者表的頭像URL字段,記載變更時間)→伺服器向線上的客戶端發送推送→客戶端更新頭像。
猜測一下,可以設定一個標識字段,預設為0,用戶更新頭像時把它置為1,在推播訊息或定期同步時,同時推送這個標識。
手機在處理訊息或定期同步聯絡人資訊的同時,判斷這個標識,如果標識為1,說明好友上傳了新頭像,這時候再GET請求拉取新頭像並緩存在本地,同時更新伺服器端標識為0,防止下一次同步時重複請求頭像。
(PS:只是一點個人的想法。)