5

キャッシュされたアイテムを特定の期間 (たとえば 24 時間) 後に失効させる方法があるかどうか疑問に思っています。

私は Apollo Client v3 が や などのメソッドを提供していることを知っていますcache.evictcache.gc、これは良いスタートであり、すでに使用しています。ただし、一定期間後にキャッシュ項目を削除する方法が必要です。

私が現在行っていることは、TimeToLive フィールドを Apollo スキーマのすべてのオブジェクトに追加することです。バックエンドがオブジェクトを返すと、フィールドには現在の時刻 + 24 時間 (つまり、24 時間の時刻) が入力されます。次に、フロント エンドでデータをクエリするときに、返されたデータの TimeToLive フィールドが将来のものかどうかを確認します (そうでない場合は、データが確実にキャッシュから取得されたことを意味し、その場合、refetch関数を呼び出します。これにより、クエリはサーバーからデータを取得するように強制されます.ただし、主に、返されたデータのすべての結果を反復処理する必要があるため、これは最善の方法とは思えません.返されたオブジェクトのいずれかが期限切れかどうかをチェックします. ; もしそうなら、すべてが再取得されます。

私が考えたもう 1 つの解決策は、React Native Queueのようなものを使用し、期限切れになったキャッシュと削除されたアイテムを定期的にチェックするバックグラウンド タスクを用意することでした。しかし、繰り返しになりますが、私はこのソリューションに完全に納得しているわけではありません。

ここで少し説明します。私は料理 / レシピ アプリを作成しています。レシピ / 投稿はデバイスにキャッシュされます。ただし、私の懸念は、ユーザーが投稿を削除できることですが、その投稿をキャッシュしている他のすべての人は引き続きそれを見ることができるため、キャッシュされたアイテムを期限切れにすることで、少なくとも数時間しか見ることができなくなります削除する前に。ただし、これをすべて一緒に行うには、より良い方法かもしれません。つまり、キャッシュされたアイテムをサーバーにクライアントに接続させることです (ただし、これを書いている時点では、低リフトのソリューションは考えられませんでした)。

4

1 に答える 1