问题
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 apollo-cache-inmemory
, it has a config
argument in its constructor, but I can't build a dummy storeFactory
to make it works.
回答1:
You can set defaultOptions
to your client like this:
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
avoids using the cache.
See https://www.apollographql.com/docs/react/advanced/caching#ignore
回答2:
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
.
Take a look at the official docs: https://www.apollographql.com/docs/react/advanced/caching.html#ignore
回答3:
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.
来源:https://stackoverflow.com/questions/47879016/how-to-disable-cache-in-apollo-link-or-apollo-client