Sha*_*aun 9 android caching retrofit okhttp
我正在使用OKHttp客户端的Retrofit来缓存来自JSON API的响应.
这很好用.
但是,如果我在设备上执行导致数据在服务器上更新的操作,我需要一种方法来"使某个特定路由无效",以确保下次请求此数据时,它将从服务器再次而不是现在过时的缓存版本.
目前,我通过在请求的Cache-Control标头中显式调用带有"no-cache"标志的新路由来解决这个问题,但是这迫使我在需要之前下载新数据,如果需要,可能会多次下载采取多个操作,只是为了使缓存保持最新.
有没有办法在我的改造/ OKhttp客户端中标记路由/方法,因为缓存已过期,需要在下次请求时通过网络进行强制更新?
whl*_*hlk 12
使用retrofit2和OkHttp3,您可以通过向API方法定义参数添加Cache-Control标头来强制执行新响应:
@GET("ws/something")
Something getSomething(@Header("Cache-Control") String cacheControl);
Run Code Online (Sandbox Code Playgroud)
然后在给你打电话时要么提供null(可能)缓存版本,要么"no-cache"提供实时版本:
myApi.getSomething(forceRefresh ? "no-cache" : null);
Run Code Online (Sandbox Code Playgroud)