【问题标题】:How to invalidate apollo android cache?如何使 apollo android 缓存失效?
【发布时间】:2020-09-25 09:31:30
【问题描述】:

这是我用于缓存的 apollo 客户端代码

val apolloSqlHelper = ApolloSqlHelper.create(context,"my_app")
        val sqlNormalizedCacheFactory = SqlNormalizedCacheFactory(apolloSqlHelper)
        val cacheKeyResolver = object: CacheKeyResolver(){
            override fun fromFieldRecordSet(
                field: ResponseField,
                recordSet: MutableMap<String, Any>
            ): CacheKey {
                return if (recordSet["__typename"] == "Repository") {
                    CacheKey.from(recordSet["id"] as String)
                } else {
                    CacheKey.NO_KEY
                }
            }

            override fun fromFieldArguments(
                field: ResponseField,
                variables: Operation.Variables
            ): CacheKey {
                return  CacheKey.NO_KEY
            }
        }

        ApolloClient.builder().serverUrl(baseUrl)
            .normalizedCache(sqlNormalizedCacheFactory,cacheKeyResolver)
            .okHttpClient(okHttpClient).build()

我正在做一个查询,之后 apollo 缓存了我的结果,但是当更多数据添加到查询中时,我不明白如何根据结果是否更改来使缓存无效。如果结果没有变化,则从缓存中获取数据或获取新数据并更新缓存

【问题讨论】:

    标签: android kotlin graphql apollo-android


    【解决方案1】:

    我不需要手动使缓存无效。 Apollo Android 为我处理它

    这段代码对我有用

    apolloClient.query(MyQuery()).responseFetcher(ApolloResponseFetchers.NETWORK_FIRST)
    

    ApolloResponseFetchers 还提供各种选项,如CACHE_FIRST、CACHE_ONLY 等

    【讨论】:

      猜你喜欢
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2019-02-03
      • 2019-04-10
      • 2011-01-13
      • 2022-08-15
      • 1970-01-01
      相关资源
      最近更新 更多