OkHttp源码解读总结(九)—>okhttp的缓存策略
标签(空格分隔): OkHttp源码 学习笔记
前言
- 以下的相关知识总结是通过慕课网的相关学习和自己的相关看法,如果有需要的可以去查看一下慕课网的相关教学,感觉还可以。
为什么要使用缓存
- 一个优点就是让客户端下一次的网络请求节省更多的时间,更快的展示数据
如何开启和使用缓存功能的呢?
new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.readTimeout(10000, TimeUnit.MILLISECONDS)
.writeTimeout(10000, TimeUnit.MICROSECONDS)
//直接这样使用 配置Cache File对象 缓存大小
.cache(new Cache(new File("cache"),24*1024*1024))
.build();
Cache.put()方法源码
@Nullable CacheRequest put(Response response) {
//获取到请求方法
String requestMethod = response.request().method();
//判断该请求方法是否符合缓存
if (HttpMethod.invalidatesCache(response.request().method())) {
try {
//移除这个请求
remove(response.request());
} catch (IOException ignored) {
// The cache cannot be written.
}
return null;
}
//非get方法不需要缓存
if (!requestMethod.equals("GET")) {
// Don't cache non-GET responses. We're technically allowed to cache
// HEAD requests and some POST requests, but the complexity of doing
// so is high and the benefit is low.
return null;
}
//
if (HttpHeaders.hasVaryAll(response)) {
return null;
}
//当经过上述的逻辑之后 到这一步 证明是可以缓存的 //那么就通过传入的response响应 创建Entry