Apollo Angular 客户端总是使用缓存

Posted

技术标签:

【中文标题】Apollo Angular 客户端总是使用缓存【英文标题】:Apollo angular client always using cache 【发布时间】:2019-10-21 13:32:03 【问题描述】:

我正在使用带有 InMemoryCache 的 apollo angular 客户端。我有一些要禁用缓存的 watchQuery。我的客户端设置如下:

link: httpLink.create(uri),
    cache: new InMemoryCache(),
    s-s-rMode: false,
    s-s-rForceFetchDelay:0,
    defaultOptions: 
      watchQuery: 
        fetchPolicy: 'no-cache',
        errorPolicy: 'ignore',
      ,
      query: 
        fetchPolicy: 'no-cache',
        errorPolicy: 'all',
      ,
    

我的 watchQuery 看起来像这样:

return this.apollo.watchQuery<TestAssetListQuery>(
        query: gql`
          query 
              testAssetList 
                name,
                path,
                size
              
          
        `,
        fetchPolicy: "no-cache",
      ).valueChanges;

然而,每个后续查询都是从缓存中提取的。

如果有任何关于如何强制 apollo 不缓存我的查询的建议,我将不胜感激。

【问题讨论】:

我应该知道我做错了什么。我正在使用 NGX 数据表,并且正在使用未更新表数据的 observable 加载数据。我仍在努力让它工作,但它不是阿波罗客户端。它工作正常。 最终我的问题是角度处理事件的方式。我正在从组件 A 调用组件 B 中的一个函数。即使我正在更新数据表的基础数据,推送事件也没有发生。我仍然不明白为什么,但是将数据表移动到生成原始事件(组件 A)的同一组件中解决了我的问题。 【参考方案1】:

因为我没有足够的声誉来发表评论。我会尝试发布它。

尝试使用network-only 而不是no-cache

【讨论】:

嗨阿努杰。我已经尝试了几乎所有可用的选项,但无法让 apollo 不使用缓存。我已经尝试过仅网络,它仍然使用缓存。我觉得我做错了什么,因为这应该可以工作,这非常关键,但是除了空缓存之外,我无法让 apollo 从缓存之外的任何地方加载。

以上是关于Apollo Angular 客户端总是使用缓存的主要内容,如果未能解决你的问题,请参考以下文章

Apollo-boost 缓存问题

Apollo resetStore 在 Angular 客户端中不起作用

订阅 Angular Apollo 查询 observable 会带来旧值、缓存问题

Apollo Angular 中的直接缓存访问

Nextjs graphql apollo 缓存总是返回 null

使用 graphql 和 apollo 客户端刷新 Angular 令牌