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 resetStore 在 Angular 客户端中不起作用
订阅 Angular Apollo 查询 observable 会带来旧值、缓存问题