OkHttp3.7缓存原理分析

28人阅读 评论(0) 收藏 举报
分类:

学习自https://yq.aliyun.com/articles/78102?spm=a2c4e.11153940.blogcont78105.14.785137beBUL1wW


温馨提示

在熟练掌握HTTP协议后,会看起来很舒服,因为就是HTTP协议的东西在Andorid中的实现


CacheIntercept

他的缓存机制自然离不开缓存拦截器了


Cache类

内部有一个disk lru cache,判断指标是requestCount,networkCount,hitCount

大意应该是,我们发起请求的次数,发起请求越过了本地缓存成功到达互联网的次数(也就是没有用强制缓存的次数),我们成功在缓存中找到该缓存的次数


CacheStrategy类

内部维护一个request和response,通过他们来描述我们的数据是从缓存获取还是从网络获取,抑或同时使用


CacheIntercept的intercept方法大体逻辑

先根据我们的request去找缓存的response

再根据我们的request去找缓存策略,找到策略了,在缓存中更新hitcount

如果我们的缓存response不符合策略,对response的body进行一个手动的关闭

如果没网,且没符合的缓存,504

如果没网,但是有符合的缓存,返回缓存

进行真正网络请求

(下面是对比缓存逻辑)

当有缓存的时候,如果服务端NOT_MODIFIED,则使用缓存,否则就更新缓存


缓存策略的大体逻辑

如果本地没缓存,发起网络请求

如果是HTTPS,但是没有进行TLS握手,需要重新发起网络请求

如果缓存策略为不缓存或者是对比缓存,发起网络请求

缓存age(时间点)与fresh(缓存有效时间段)时间

如果 age + min-fresh >= max-age && age + min-fresh < max-age + max-stale,则虽然缓存过期了,但是缓存继续可以使用,只是在头部添加110警告码


DiskLruCache管理日志不用多看,只需要知道一个读写分离即可

查看评论

缓存redis,消息队列rabbitmq

redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string、list、set、zset和hash。为了保证效率,数据都是缓存在内存中。 redis的出现,在部分场合可以对关系数据库起到很好的补充作用。 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。
  • 2017年03月03日 18:28

ehcache基本原理

ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源...
  • u011202334
  • u011202334
  • 2017-06-24 18:11:49
  • 483

okhttp3.2.0+okio1.7.0

  • 2016年04月21日 12:10
  • 726KB
  • 下载

OkHttp3 源码解读

转载请注明本文出自maplejaw的博客(http://blog.csdn.net/maplejaw_)开源库地址:https://github.com/square/okhttp 解读版本:3.4...
  • maplejaw_
  • maplejaw_
  • 2016-07-31 20:05:25
  • 2025

android universal image loader 缓冲原理详解

1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文简称...
  • xiangzhihong8
  • xiangzhihong8
  • 2015-05-13 12:10:00
  • 1632

浏览器 HTTP 缓存原理分析

以前项目中遇到了很多浏览器缓存相关的问题,也在网上查过资料,搞过服务器的配置,来确保客户端加载服务器资源的速度和资源有效性。最近仔细看了下http协议中和缓存相关的一些属性,总结一下。 浏览...
  • nic7968
  • nic7968
  • 2015-11-12 21:47:22
  • 248

浏览器HTTP缓存原理分析

浏览器HTTP缓存原理分析
  • wyqlxy
  • wyqlxy
  • 2015-10-26 09:29:21
  • 310

epoll原理分析,代码深入分析

  • 2011年09月03日 13:34
  • 197KB
  • 下载

TCP网络传输深层原理分析

  • 2010年05月14日 01:43
  • 108KB
  • 下载

Spring Boot实战与原理分析

Spring Boot实战与原理分析 1:Spring Boot概述与课程概要介绍 2:Spring4 快速入门 3:Spring4 扩展分析(一) 4:Spring4 扩展分析(二) ...
  • java_web_hack1
  • java_web_hack1
  • 2016-09-22 12:59:48
  • 1311
    个人资料
    持之以恒
    等级:
    访问量: 5万+
    积分: 5109
    排名: 6809
    文章存档
    最新评论