OKHttp缓存有效期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OKHttp缓存有效期相关的知识,希望对你有一定的参考价值。

我是OkHttpClient的新手,我不知道如何只存储缓存一周。 因此,当代理更新数据时,它将在1周后在移动设备中更新。

答案

你可以使用MaxAgeMaxStaleCacheControl参数

MaxAge

设置缓存响应的最大年龄。如果缓存响应的年龄超过MaxAge,则不会使用它,并且将发出网络请求

MaxStale

接受超过其新鲜度生命周期的缓存响应,最多为MaxStale。如果未指定,则不会使用过时的缓存响应

public Interceptor provideCacheInterceptor(final int maxDays) {      
    return new Interceptor() {       
        @Override
        public Response intercept(Chain chain) throws IOException {
            Response response = chain.proceed(chain.request());
            CacheControl cacheControl = new CacheControl.Builder()
                .maxAge(maxDays, TimeUnit.DAYS)
                .build();

            return response.newBuilder()
                .header(Constants.CACHE_CONTROL, cacheControl.toString())
                .build();
        }
    };
}

之后你可以将它添加到你的HttpClient

int MaxCacheDays = 7; 
httpClient.addNetworkInterceptor(provideCacheInterceptor(MaxCacheDays));

以上是关于OKHttp缓存有效期的主要内容,如果未能解决你的问题,请参考以下文章

使用 OkHttp 缓存 POST 请求

okhttp-utils的封装之okhttp的使用

无法从缓存 okHttp 和改造中加载数据

使用 Retrofit、okhttp 和 picasso 缓存图像和字符串

okhttp 客户端何时缓存服务器响应?

OKHttp通信使用