刷新页面时,apollo-state-link 不在缓存中保存状态

Posted

技术标签:

【中文标题】刷新页面时,apollo-state-link 不在缓存中保存状态【英文标题】:apollo-state-link does not hold state in cache when page is refreshed 【发布时间】:2019-07-06 17:27:09 【问题描述】:

我注意到,当我在客户端本地更新缓存并将其路由到另一个页面时,缓存会与数据一起保留。

但是,当我刷新该页面时,缓存被清除。有没有办法在刷新后保持缓存状态?

【问题讨论】:

【参考方案1】:

Apollo 的 InMemoryCache 是在内存中的,所以它不会在页面加载之间持久化。持久化缓存的推荐方法是使用apollo-cache-persist。示例用法:

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

const cache = new InMemoryCache(...)

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

const client = new ApolloClient(
  cache,
  // other client options
)

有关高级配置和用法,请查看 repo。另外,请注意,如果您使用的是 s-s-r,则有 known issues 使用此库。您也可以查看apollo-cache-instorage,这可能对 s-s-r 更友好。

【讨论】:

以上是关于刷新页面时,apollo-state-link 不在缓存中保存状态的主要内容,如果未能解决你的问题,请参考以下文章

QT5怎样设置父窗口刷新时,不刷新子窗口?

移动端 点击返回按钮页面不刷新

当页面返回不刷新时进行强制刷新

怎么刷新页面后,js就不执行了

在android中打开通知时页面不刷新

html页面中,如何没有鼠标操作时刷新页面(如鼠标不动5分钟刷新一下页面)