使用 apollo-boost 持久化缓存

Posted

技术标签:

【中文标题】使用 apollo-boost 持久化缓存【英文标题】:Persist cache with apollo-boost 【发布时间】:2018-09-25 08:15:36 【问题描述】:

我有个小问题。

我们如何使用 apollo-boost lib 持久化缓存?

我不确定如何使用以下配置实现apollo-cache-persist

const client = new ApolloClient(
  uri: 'http://localhost:8080/_/service/com.suppliers/graphql',
  clientState: 
    defaults: 
      networkStatus: 
        __typename: 'NetworkStatus',
        isConnected: false,
      ,
    ,
    resolvers: 
      Query: ,
      Mutation: 
        updateNetworkStatus: (_,  isConnected ,  cache ) => 
          cache.writeData(
            data: 
              networkStatus: 
                __typename: 'NetworkStatus',
                isConnected,
              ,
            ,
          )
          return null
        ,
      ,
    ,
  ,
)

提前谢谢!

【问题讨论】:

【参考方案1】:

按照缓存持久化示例here设置缓存:

然后,将其作为自定义缓存传入boost配置中,如缓存配置部分here所示:

例如:

import  InMemoryCache  from 'apollo-cache-inmemory';
import  persistCache  from 'apollo-cache-persist';

const cache = new InMemoryCache(...);

persistCache(
  cache,
  storage: window.localStorage,
);

import ApolloClient from "apollo-boost";

const client = new ApolloClient(
  uri: "https://48p1r2roz4.sse.codesandbox.io",
  cache: cache
);

【讨论】:

以上是关于使用 apollo-boost 持久化缓存的主要内容,如果未能解决你的问题,请参考以下文章

禁用从 apollo-boost 导出的 ApolloClient 中的缓存

译使用 webpack 进行 web 性能优化:利用好持久化缓存

缓存和持久化有啥区别?

缓存和持久化数据集

持久化实体框架查询缓存

细说Redis持久化机制