问题描述
在我的 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 (将#修改为@)