apollo-client、apollo-link、およびreact-apolloを使用しています。キャッシュを完全に無効にしたいのですが、方法がわかりませんそれをするために。
apollo-cache-inmemory
のソースを読みましたが、コンストラクタにconfig
引数がありますが、ダミーのstoreFactory
を作成して機能させることはできません。
次のようにdefaultOptions
をクライアントに設定できます。
const defaultOptions = {
watchQuery: {
fetchPolicy: 'no-cache',
errorPolicy: 'ignore',
},
query: {
fetchPolicy: 'no-cache',
errorPolicy: 'all',
},
}
const client = new ApolloClient({
link: concat(authMiddleware, httpLink),
cache: new InMemoryCache(),
defaultOptions: defaultOptions,
});
fetchPolicy
as network-only
は、キャッシュの使用を回避します。
https://www.apollographql.com/docs/react/advanced/caching#ignore を参照してください
実際、fetchPolicy
をnetwork-only
に設定すると、 「読み取りをバイパスしてネットワーク要求を強制する」ために、後で使用するために応答がキャッシュに保存されます 。
本当にキャッシュを無効にしたい場合は、読み取りおよび書き込み、no-cache
を使用します。
公式ドキュメントをご覧ください: https://www.apollographql.com/docs/react/advanced/caching.html#ignore
私は常に、Apolloクライアントからの組み込みキャッシュ機能を無効にしないことをお勧めします。代わりに、個々のクエリに対して常にfetchPolicy: 'network-only'
を設定できます。このようなもの
<Query
query={GET_DOG_PHOTO}
variables={{ breed }}
fetchPolicy='network-only'
>
{({ loading, error, data, refetch, networkStatus }) => {
...
}}
</Query>
このクエリを使用してデータを取得する際、最初にキャッシュから読み取るのではなく、常にネットワーク要求を実行します。