OKHttp使用缓存
2020-06-13 本文已影响0人
浪里_个郎
首先设置缓存文件夹:
//缓存文件夹
File cacheFile = new File(getExternalCacheDir().toString(),"cache");
//缓存大小
int cacheSize = 10 * 1024 * 1024;
//创建缓存对象
Cache cache = new Cache(cacheFile,cacheSize);
//设置缓存
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
设置缓存策略:
final CacheControl.Builder builder = new CacheControl.Builder();
builder.maxAge(100, TimeUnit.MILLISECONDS); // 设置缓存的最大有效时间为100毫秒
CacheControl cache = builder.build();
final Request request = new Request.Builder().cacheControl(cache).url(requestUrl).build();
原理:
通过缓存拦截器CacheInterceptor拦截请求,如果有缓存,则取出缓存数据放入Response。其中使用CacheStrategy获取缓存策略。
