Android 如何更改Okhttp中的默认缓存策略?

Android 如何更改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

我使用毕加索的图像加载。毕加索没有磁盘缓存。OkHttp维护由HTTP缓存头控制的HTTP缓存。我想为磁盘缓存的映像设置一个到期日,以便在HTTP response
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缓存这么多小时?