96 votes

Comment faire pour désactiver le cache dans apollo-link ou d'apollon-client?

Je suis à l'aide d' apollon-client, apollo-link et réagir-apollo, je veux pleinement de désactiver le cache, mais ne savent pas comment le faire.

J'ai lu la source de l' apollo-cache-inmemory, il a un config argument dans son constructeur, mais je ne peux pas construire un mannequin storeFactory pour en faire des œuvres.

196voto

Irvin Chan Points 511

Vous pouvez configurer defaultOptions de 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

56voto

duske Points 415

En fait, le réglage fetchPolicy de network-only "encore enregistre la réponse dans le cache pour une utilisation ultérieure, en contournant la lecture et de les forcer à une demande du réseau".

Si vous voulez vraiment désactiver le cache, lire et écrire, utilisez no-cache.

Jetez un oeil à la officiel docs: https://www.apollographql.com/docs/react/advanced/caching.html#ignore

39voto

Anuj Points 151

Je suggère toujours de ne pas désactiver les inbuild fonctionnalité de mise en cache à partir d'apollo client. Au lieu de cela, vous pouvez toujours configurer fetchPolicy: 'network-only' pour les requêtes individuelles. Quelque chose comme ceci

<Query
    query={GET_DOG_PHOTO}
    variables={{ breed }}
    fetchPolicy='network-only'
>
 {({ loading, error, data, refetch, networkStatus }) => {
   ...
 }}
</Query>

Lors de l'extraction de données avec cette Requête, il serait toujours faire une demande de réseau au lieu de la lecture à partir du cache de la première.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X