android - 服务端数据更新,如何更新客户端缓存
黄舟
黄舟 2017-04-18 09:49:08
0
4
435

我是服务端

被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据

对此有几点疑虑,特来请教各位大拿

  1. 客户端缓存更新是否真的有必要依赖服务端的通知?

  2. 如果增加版本号这种需求成立,难道需要每次服务端更新数据都要更新版本号?感觉并不是优雅的设计

  3. 目前处于项目初期,是否可以考虑根据具体业务数据更新频度,客户端自己设计更新策略

  4. 如果服务端数据变动通知真的是强需求,我考虑使用Last-Modified 与If-Modified-Since等Http Header的方式,是否可行

  5. 有没有其他的解决方案,还请赐教

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(4)
迷茫

更新の変更に敏感なこの種のデータ部分については、データベースの設計時に create_time フィールドと update_time フィールドを追加できます。 コンテンツが変更されると、同時に update_time フィールドの値も更新されます。

残りの部分はお客様自身で処理してください。インターフェースには API バージョン番号を含める必要はありません。

いいねを押す +0
巴扎黑
  1. 考えてみてください。サーバーのデータが更新されたことをクライアントが知る方法はあるでしょうか。

  2. 何かがエレガントではないと考えるための前提条件は、よりエレガントなものを見つけることができるということです。

  3. これはデータ同期要件によって異なります。同期要件が高い場合、サーバーは通知する必要があります。

いいねを押す +0
迷茫

まず、ここでのキャッシュデータの定義は、長期間更新されず、ほとんど更新されないデータです。州、市、地域、固定設定項目、ユーザー認証情報など(基本的に更新されません)。
現在のプロジェクトでは、クライアントは初期化されるたびにサーバー インターフェイスを呼び出し、update_time を渡し、サーバーはこの update_time に基づいてデータベースをチェックし、現在のデータが更新されているかどうかを判断します。更新された場合、クライアントに null を返し、クライアントはローカルにキャッシュされたデータを取得します。

いいねを押す +0
阿神

フロントエンドに API を定期的に呼び出して最終更新時刻を送信させます。API はデータベースに基づいて最終更新時刻を決定し、最終更新時刻でない場合はデータをフロントエンドに返します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート