検索

ホームページ  >  に質問  >  本文

android - 服务端数据更新,如何更新客户端缓存

我是服务端

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

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

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

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

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

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

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

黄舟黄舟2867日前446

全員に返信(4)返信します

  • 迷茫

    迷茫2017-04-18 09:51:08

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

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:51:08

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

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

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

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:51:08

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

    返事
    0
  • 阿神

    阿神2017-04-18 09:51:08

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

    返事
    0
  • キャンセル返事