我是服务端
被客户端吐槽说我的API接口没有数据版本号(用来表示后台数据是否有更新),导致客户端缓存不知道什么时候更新,每次都要请求服务端数据
对此有几点疑虑,特来请教各位大拿
客户端缓存更新是否真的有必要依赖服务端的通知?
如果增加版本号这种需求成立,难道需要每次服务端更新数据都要更新版本号?感觉并不是优雅的设计
目前处于项目初期,是否可以考虑根据具体业务数据更新频度,客户端自己设计更新策略
如果服务端数据变动通知真的是强需求,我考虑使用Last-Modified 与If-Modified-Since等Http Header的方式,是否可行
有没有其他的解决方案,还请赐教
更新の変更に敏感なこの種のデータ部分については、データベースの設計時に create_time フィールドと update_time フィールドを追加できます。 コンテンツが変更されると、同時に update_time フィールドの値も更新されます。
残りの部分はお客様自身で処理してください。インターフェースには API バージョン番号を含める必要はありません。
考えてみてください。サーバーのデータが更新されたことをクライアントが知る方法はあるでしょうか。
何かがエレガントではないと考えるための前提条件は、よりエレガントなものを見つけることができるということです。
これはデータ同期要件によって異なります。同期要件が高い場合、サーバーは通知する必要があります。
まず、ここでのキャッシュデータの定義は、長期間更新されず、ほとんど更新されないデータです。州、市、地域、固定設定項目、ユーザー認証情報など(基本的に更新されません)。
現在のプロジェクトでは、クライアントは初期化されるたびにサーバー インターフェイスを呼び出し、update_time を渡し、サーバーはこの update_time に基づいてデータベースをチェックし、現在のデータが更新されているかどうかを判断します。更新された場合、クライアントに null を返し、クライアントはローカルにキャッシュされたデータを取得します。
フロントエンドに API を定期的に呼び出して最終更新時刻を送信させます。API はデータベースに基づいて最終更新時刻を決定し、最終更新時刻でない場合はデータをフロントエンドに返します。