微信好友的头像肯定是做缓存的,那么好友头像修改后,用户这边是如何实现立即就能看到修改后的头像的呢?
业精于勤,荒于嬉;行成于思,毁于随。
リアルタイムで更新したい場合: プッシュを使用する必要があります。A が自分のアバターを変更した後、サーバーに通知し、サーバーは A の友人にプッシュ通知を送信して A のアバターを更新します。
最初にプルするのはアバター URL である必要があります。ローカル キャッシュは URL に基づいてアバター URL をプルし、それをローディング モジュールを通じてロードするたびに、現在キャッシュされている画像が正しいかどうかを判断します。この URL と一致するかどうかにより、新しい URL を通じてダウンロードされます。
データベースにフィールドを保存します: アバターの最終変更時刻。
推測してみましょう。括弧内のプロセスは推測です: ユーザー A が新しいアバターをアップロード → サーバーが新しいアバターを処理 → 新しいアバターの URL をユーザー テーブルのフィールドに保存し、変更時間を記録します(→ アバターを同期します。CDN に移動します。→ ユーザー テーブルのアバター URL フィールドを更新し、変更時間を記録します。)→ サーバーはオンライン クライアントにプッシュを送信します。→ クライアントはアバターを更新します。
推測として、 識別フィールド を設定できます。デフォルトは 0 です。ユーザーがアバターを更新するときは、これを 1 に設定します。メッセージをプッシュするとき、または定期的に同期するときは、この ID を同時にプッシュします。時間。 携帯電話は、メッセージの処理中または連絡先情報の定期的な同期中に、このフラグが 1 であることを判断し、この時点で友人が新しいアバターをアップロードしたことを意味します。それをローカルにキャッシュし、同時にサーバーは次回の同期中にアバターの繰り返し要求を防ぐために 0 に更新されます。 (PS: 単なる個人的な考えです。)
リアルタイムで更新したい場合: プッシュを使用する必要があります。A が自分のアバターを変更した後、サーバーに通知し、サーバーは A の友人にプッシュ通知を送信して A のアバターを更新します。
最初にプルするのはアバター URL である必要があります。ローカル キャッシュは URL に基づいてアバター URL をプルし、それをローディング モジュールを通じてロードするたびに、現在キャッシュされている画像が正しいかどうかを判断します。この URL と一致するかどうかにより、新しい URL を通じてダウンロードされます。
データベースにフィールドを保存します: アバターの最終変更時刻。
推測してみましょう。括弧内のプロセスは推測です:
ユーザー A が新しいアバターをアップロード → サーバーが新しいアバターを処理 → 新しいアバターの URL をユーザー テーブルのフィールドに保存し、変更時間を記録します(→ アバターを同期します。CDN に移動します。→ ユーザー テーブルのアバター URL フィールドを更新し、変更時間を記録します。)→ サーバーはオンライン クライアントにプッシュを送信します。→ クライアントはアバターを更新します。
推測として、 識別フィールド を設定できます。デフォルトは 0 です。ユーザーがアバターを更新するときは、これを 1 に設定します。メッセージをプッシュするとき、または定期的に同期するときは、この ID を同時にプッシュします。時間。
携帯電話は、メッセージの処理中または連絡先情報の定期的な同期中に、このフラグが 1 であることを判断し、この時点で友人が新しいアバターをアップロードしたことを意味します。それをローカルにキャッシュし、同時にサーバーは次回の同期中にアバターの繰り返し要求を防ぐために 0 に更新されます。
(PS: 単なる個人的な考えです。)