如何解决Android - 每个查询的阿波罗客户端响应提取器不起作用
在我的 android 应用中,只有少数请求可以与 CACHE_FirsT
一起使用,一旦获取,它就可以终生使用。对于其他请求,我更喜欢使用 NETWORK_ONLY
。
所以我将 defaultResponseFetcher
设置为 NETWORK_ONLY
val cacheFactory = LrunormalizedCacheFactory(evictionPolicy.builder().maxSizeBytes(10 * 1024 * 1024).build())
val apolloClient = ApolloClient.builder()
.serverUrl("https://...")
.defaultResponseFetcher(ApolloResponseFetchers.NETWORK_ONLY)
.normalizedCache(cacheFactory)
.build()
对于我知道的查询,它不会随着时间的推移而改变,我明确指定了 dataFetcher,如下所示。
apolloClient.query(ReturnsSameQuery(itemId))
.responseFetcher(ApolloResponseFetchers.CACHE_FirsT)
.toDeferred().await()
我的期望是,为少数请求设置 CACHE_FirsT
将确保只缓存合适的候选者。因此,在缓存中留出更多空间,其他请求将始终返回最新数据,而无需缓存。
这里的实际问题:
但我看到每个请求的 responseFetcher
没有效果,这些
每次从网络获取 ReturnsSameQuery
项。
**另一种失败的方法**
如果我将 defaultResponseFetcher
设置为 CACHE_AND_NETWORK
,它会缓存每个请求并从缓存中返回。这将是一个开销,因为大多数请求根本不需要缓存。这将影响应用程序的整体健全性。
此外,为每个 API 调用指定 responseFetcher
将需要对每个 API 再次进行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。