How to disable cache in apollo-link or apollo-client?

前端 未结 3 1286
粉色の甜心
粉色の甜心 2021-02-01 00:21

I\'m using apollo-client, apollo-link and react-apollo, I want to fully disable cache, but don\'t know how to do it.

I read the source of

相关标签:
3条回答
  • 2021-02-01 01:14

    Actually, setting fetchPolicy to network-only still saves the response to the cache for later use, bypassing the reading and forcing a network request.

    If you really want to disable the cache, read and write, use no-cache. Which is "similar to network-only, except the query's result is not stored in the cache."

    Take a look at the official docs: https://www.apollographql.com/docs/react/data/queries/#configuring-fetch-logic

    0 讨论(0)
  • 2021-02-01 01:21

    You can set defaultOptions to your client like this:

    const defaultOptions: 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 no-cache avoids using the cache.

    See https://www.apollographql.com/docs/react/api/apollo-client/#apolloclient-functions

    0 讨论(0)
  • 2021-02-01 01:21

    I would always suggest not to disable inbuild caching feature from apollo client. Instead you can always set fetchPolicy: 'network-only' for an individual queries. Something like this

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

    While fetching data with this Query, it would always do a network request instead of reading from cache first.

    0 讨论(0)
提交回复
热议问题