我是OkHttpClient的新手,我不知道如何只存储缓存1周 因此,当代理更新数据时,它将在1周后在移动设备中更新。
答案 0 :(得分:0)
您可以使用MaxAge
MaxStale
和CacheControl
参数
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));