微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android - 每个查询的阿波罗客户端响应提取器不起作用

如何解决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 举报,一经查实,本站将立刻删除。