【问题标题】:Apollo angular client always using cacheApollo Angular 客户端总是使用缓存
【发布时间】:2023-03-07 09:04:01
【问题描述】:

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

link: httpLink.create({uri}),
    cache: new InMemoryCache(),
    ssrMode: false,
    ssrForceFetchDelay: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)的同一组件中解决了我的问题。

标签: angular caching apollo


【解决方案1】:

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

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

【讨论】:

  • 嗨阿努杰。我已经尝试了几乎所有可用的选项,但无法让 apollo 不使用缓存。我已经尝试过仅网络,它仍然使用缓存。我觉得我做错了什么,因为这应该可以工作,这非常关键,但是除了空缓存之外,我无法让 apollo 从缓存之外的任何地方加载。
猜你喜欢
  • 2017-03-18
  • 2020-08-07
  • 2021-04-21
  • 2020-11-03
  • 2019-03-24
  • 2021-03-11
  • 2021-09-16
  • 2021-07-30
相关资源
最近更新 更多