Android 如何更改Okhttp中的默认缓存策略?
我使用毕加索的图像加载。毕加索没有磁盘缓存。OkHttp维护由HTTP缓存头控制的HTTP缓存。我想为磁盘缓存的映像设置一个到期日,以便在HTTP responseAndroid 如何更改Okhttp中的默认缓存策略?,android,http,picasso,okhttp,Android,Http,Picasso,Okhttp,我使用毕加索的图像加载。毕加索没有磁盘缓存。OkHttp维护由HTTP缓存头控制的HTTP缓存。我想为磁盘缓存的映像设置一个到期日,以便在HTTP responsecache-control:public,max-age=7200中添加缓存控制头,但它不考虑缓存头。当前行为是默认的HTTPResponseCache,它支持RFC 7234。 我们还缺什么吗 您可以使用网络拦截器重写响应中的缓存头。下面是一个来自的示例,以帮助您开始: /** Dangerous interceptor that
cache-control:public,max-age=7200
中添加缓存控制头,但它不考虑缓存头。当前行为是默认的HTTPResponseCache,它支持RFC 7234。
我们还缺什么吗
您可以使用网络拦截器重写响应中的缓存头。下面是一个来自的示例,以帮助您开始:
/** Dangerous interceptor that rewrites the server's cache-control header. */
private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override public Response intercept(Interceptor.Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.header("Cache-Control", "max-age=60")
.build();
}
};
请注意,您可能需要从服务器的响应中删除头以获得所需的缓存行为
还要注意的是,最好是修复服务器,让它按照您的意愿运行;这样,它就可以在iOS和web上正常工作。我们尝试从客户端设置标题,但仍然不遵守
缓存控制
标题。有没有办法让okhttp缓存这么多小时?