我使用Retrofit和OkHttp客户端进行网络呼叫。我的服务器支持Etag缓存,我已经添加了缓存
okHttp
客户。有些API我不想缓存
这是我的okHttpClient
配置
OkHttpClient okHttpClient(Context context,
HttpLoggingInterceptor loggingInterceptor,Cache okHttpCache) {
final OkHttpClient.Builder builder = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.cache(okHttpCache)
return builder.build();
}
Cache cache(Context context) {
return new Cache(new File(context.getCacheDir(), "cache"),10 * 1024 * 1024);
}
我可以忽略缓存中的一些API吗?
答案 0 :(得分:2)
如果您只使用OkHttp库,则可以将缓存控制策略指定为CacheControl.FORCE_NETWORK
到您的请求对象。更多信息:https://github.com/square/okhttp/issues/1496
如果您使用OkHttp与Retrofit配合使用,则可以在界面内的请求定义方法中添加Cache-Control: no-cache
标头:
(示例中更新了拼写)
@Headers("Cache-Control: no-cache")
@GET("users/me")
Call<User> getUser();
答案 1 :(得分:0)
Okhttp3为缓存中的URL请求提供Iterator
public Iterator<String> urls() throws IOException {
hasNext();
next();
remove();
}
您可以简单地使用它来检查感兴趣的API并忽略它。 见doc http://java.sun.com/javase/6/docs/api/java/util/Iterator.html?is-external=true