当前位置:  开发笔记 > 前端 > 正文

如何在apollo-link或apollo-client中禁用缓存?

如何解决《如何在apollo-link或apollo-client中禁用缓存?》经验,为你挑选了3个好方法。

我正在使用apollo-client,apollo-linkreact-apollo,我想完全禁用缓存,但不知道该怎么做.

我读了apollo-cache-inmemory它的源代码,它config的构造函数中有一个参数,但是我无法构建一个虚拟函数storeFactory来使它工作.



1> Irvin Chan..:

你可以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,

});

fetchPolicynetwork-only避免使用缓存.


它不使用缓存,但是apollo仍在缓存所有数据......

2> 小智..:

实际上,设置fetchPolicynetwork-only "仍然保存对缓存的响应以供以后使用,绕过读取并强制网络请求".

如果你真的要禁用缓存,读取写入,使用no-cache.

看看官方文档: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


 {({ loading, error, data, refetch, networkStatus }) => {
   ...
 }}

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

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有