我使用OkHttp在应用启动时从后端获取一些数据。该请求仅执行一次。响应字符串被解析为数据类,存储在内存中,并在应用生存期内使用。现在后端要求我用TTL缓存一些数据。
if some_key in cache: return cache.get(some_key)
else:
get value, ttl from BE.
populate cache with ttl
return value
最快的实现方式是什么?
答案 0 :(得分:0)
在创建TextBlock
实例时,只需将OkHttpClient
方法应用于生成器,如下所示:
.cache
编辑:
要在正文过期后重复请求,您必须先从请求中获取最大年龄值:
val okHttpClient = OkHttpClient.Builder()
.cache(Cache(context.getCacheDir(), cacheSize)
.build()
然后使用JobScheduler或AlarmManager之类的东西计划下一个请求,或者如果您确定当前线程在下一个请求之前不会被杀死,则可以发布一个延迟的可运行对象:
val cacheControl = CacheControl.parse(data.headers())
val maxAge = cacheControl.maxAgeSeconds()