J'utilise apollo-client, apollo-link et react-apollo, je veux désactiver complètement le cache, mais je ne sais pas comment. pour le faire.
J'ai lu la source de apollo-cache-inmemory
, il a un argument config
dans son constructeur, mais je ne peux pas construire de dummy storeFactory
pour que cela fonctionne.
Vous pouvez définir defaultOptions
sur votre client comme ceci:
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
comme network-only
évite d'utiliser le cache.
Voir https://www.apollographql.com/docs/react/advanced/caching#ignore
En fait, mettre fetchPolicy
à network-only
"" enregistre toujours la réponse au cache pour une utilisation ultérieure, en ignorant la lecture et en forçant une requête réseau " .
Si vous voulez vraiment désactiver le cache, lisez et écrivez, utilisez no-cache
.
Consultez la documentation officielle: https://www.apollographql.com/docs/react/advanced/caching.html#ignore
Je conseillerais toujours de ne pas désactiver la fonctionnalité de mise en cache inbuild du client Apollo. Au lieu de cela, vous pouvez toujours définir fetchPolicy: 'network-only'
pour une requête individuelle. Quelque chose comme ça
<Query
query={GET_DOG_PHOTO}
variables={{ breed }}
fetchPolicy='network-only'
>
{({ loading, error, data, refetch, networkStatus }) => {
...
}}
</Query>
Lors de la récupération des données avec cette requête, une requête réseau serait toujours effectuée au lieu de lire d'abord dans le cache.