OKHttp缓存有效期

时间:2017-12-18 13:15:01

标签: android caching okhttp3

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

1 个答案:

答案 0 :(得分:0)

您可以使用MaxAge

MaxStaleCacheControl参数

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));