1.从HttpEngine#sendReques说起
在这个代码当中,有下面这一段代码。
InternalCache responseCache = Internal.instance.internalCache(client);
额,上面的代码还是调用OkHttpCLient的静态代码块中的internalCache方法。
@Override public InternalCache internalCache(OkHttpClient client) {
return client.internalCache();
}
我们继续看internalCache方法。
InternalCache internalCache() {
return cache != null ? cache.internalCache : internalCache;
}
我们这里需要看下InternalCache的实现,这个位于Cache.java里面。
2.InternalCache
final InternalCache internalCache = new InternalCache() {
@Override public Response get(Request request) throws IOException {
return Cache.this.get(request);
}
@Override public CacheRequest put(Response response) throws IOException {
return Cache.this.put(response);
}
@Override public void remove(Request request) throws IOException {
Cache.this.remove(request);
}
@Override public void update(Response cached, Response network) throws IOException {
Cache.this.update(cached, network);
}
@Override public void trackConditionalCacheHit() {
Cache.