【发布时间】:2023-04-10 10:54:01
【问题描述】:
我正在为我的网络调用使用带有 okHTTP 缓存的 Retrofit,当我收到响应时,我编写了一个拦截器来查找响应正文“timeToCache”值并重新写入缓存标头。当我更新实体并调用 get 方法时,我现在面临一个问题,它总是向我返回缓存响应。为了避免我在请求中添加了以下标头
@GET("ws/something")
Something getSomething(@Header("Cache-Control") String cacheControl);
and then when calling you either supply null for a (maybe-)cached version or "no-cache" for a live version:
myApi.getSomething(forceRefresh ? "no-cache" : null);
现在我得到了新的响应,但是这个响应没有得到缓存?我现在如何将此响应保存到缓存中?
【问题讨论】:
-
您是否在请求中尝试过 onlyIfCached() 和 maxStale() ?
-
你的意思是我需要设置一些请求头来获得新的响应得到缓存
-
是的,试试这个标题,仅供参考:square.github.io/okhttp/3.x/okhttp/okhttp3/Cache.html