イントロ:私は戻って、フロントエンドの角度アプリを供給し、バックエンドの複雑かつ長期的なクエリを持ってキャッシュの無効化と同期角度/バックエンドあまりに
。
現在、角度アプリは、複雑なクエリから直接読み取るのではなく、バックエンドでキャッシュされたデータを使用します。これには数分かかります。キャッシュは毎朝、毎晩暖かくなります。
ユーザーがuiを変更し、データを保存してからサーバー側に渡してデータベースに保存するとき。その時点で、ユーザーがページを更新するまで、UIは最新の状態になります。同時に、データベースは最新ですが、キャッシュは古くなっています。
したがって、ユーザーがページをリフレッシュすると、無効なキャッシュ値がページに表示されます。
さらに詳しい情報:
私は今、キャッシュを更新する方法を考えています、そしてより多くの経験を積んだ人たちから何かアドバイスは大歓迎だろう。
私の考えは、キャッシュジョブ(一度に1つ)でキャッシュをリフレッシュすることです。これは、ユーザーが何かを保存するとすぐにキューに入れられます。ジョブは変更された関連情報を持ち、キャッシュ全体を再計算する必要はなく、変更されたビットだけを再計算する必要があります。
質問の一部:私は、ユーザーがページをリフレッシュしても、データを最新の状態にユーザーを維持するために使用することができますどのような技術
?データがサーバーに送信されるときに、クライアント側で 'deltas'をindexedDBまたはlocalstorageの形式で保存する必要があります。したがって、ページがリフレッシュされると、ユーザーはローカルストレージまたは索引付けされたデータベースからデータを読み取ります。
私はまだこのトラフを考えていますが、明らかに私はこれまで多くの経験がありませんでした。
基本的には、バックエンド/フロントエンド/キャッシュを含む何かを変更することはできますが、これはPOC段階にあります。他の人のためにできるだけ多くの情報を得ようとしています。
更新
もう少し背景。私はページのようなインデックスに取り組んでいるので、インラインで編集できる複数のレコードがあります。
また、構造のようなマップにダンプしてjsonの形式でフロントエンドに渡す前に、バックエンドでフラットDBレコードの一部の変換を行っています。
ユーザーが変更や保存を行った場合、更新時にこれらのデータベース値を要求するのはなぜですか? –
私は最も簡単な方法は、キャッシュが作成された時間を知っていることを確認することだと思います。変更を加えたら、キャッシュの時間とともに、ページの現在の状態をlocalStorageに保存します。ページをロードすると、キャッシュされたデータが取得されます。ローカルストレージのバージョンより新しいかどうかを確認します。キャッシュされている場合は、キャッシュを使用してください。そうでない場合は、キャッシュされたデータに変更が加えられているので、localStorageからデータをリロードしてください。 – dave
あなたが言うことは、キャッシュよりもデータ変換の仕事に似ています。あなたがサーバー側でやっていることを詳しく説明することは役に立ちます。 – zeroflagL