通过缓存处理可以有效降低服务器的负荷,加快APP界面加载速度,提升用户体验。Retrofit + OkHttp缓存处理流程是这样的,请求响应之后会在data/data/packageName/cache下建立一个response文件夹,保存缓存数据,后续请求时若无网络,则直接读取缓存内容,若有网络则从网络获取最新数据并缓存。

1.设置缓存路径,大小及添加缓存拦截器
//设置缓存路径
File httpCacheDirectory = new File(CommonApplication.getInstance().getCacheDir(), "responses");
//设置缓存 10M
Cache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
//创建OkHttpClient,并添加拦截器和缓存代码
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new CacheInterceptor(CommonApplication.getInstance()))
.cache(cache).build();
2.定义缓存拦截器。若网络正常,则缓存有效期1分钟;若网络异常,则缓存有效期6小时
public class CacheInterceptor implements Interceptor {
private Context mContext;
public CacheInterceptor(Context context) {
mContext = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (NetworkUtils.isNetworkAvailable(mContext)) {//没网强制从缓存读取(必须得写,不然断网状态下,退出应用,或者等待一分钟后,就获取不到缓存)
request = request.newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.build();
}
Response response = chain.proceed(request);
Response responseLatest;
if (NetworkUtils.isNetworkAvailable(mContext)) {
int maxAge = 60; //有网失效一分钟
responseLatest = response.newBuilder()
.removeHeader("Pragma")
.removeHeader("Cache-Control")
.header("Cache-Control", "public, max-age=" + maxAge)
.build();
} else {
int maxStale = 60 * 60 * 6; // 没网失效6小时
responseLatest = response.newBuilder()
.removeHeader("Pragma")
.removeHeader("Cache-Control")
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
.build();
}
return responseLatest;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Retrofit
# OkHttp缓存
# Android中okhttp3.4.1+retrofit2.1.0实现离线缓存
# Android中的Retrofit+OkHttp+RxJava缓存架构使用
# 拦截器
# 是这样
# 会在
# 若有
# 建立一个
# 若无
# 大家多多
# 加载
# 断网
# 分钟后
# 状态下
# Cache
# responses
# getCacheDir
# getInstance
# CacheInterceptor
# addNetworkInterceptor
# build
# public
# OkHttpClient
相关文章:
建站主机是否等同于虚拟主机?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何高效配置香港服务器实现快速建站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星后台管理如何实现高效配置?
如何解决VPS建站LNMP环境配置常见问题?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
详解jQuery中基本的动画方法
常州企业网站制作公司,全国继续教育网怎么登录?
python的本地网站制作,如何创建本地站点?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在宝塔面板创建新站点?
c++怎么用jemalloc c++替换默认内存分配器【性能】
网站制作报价单模板图片,小松挖机官方网站报价?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
香港服务器如何优化才能显著提升网站加载速度?
独立制作一个网站多少钱,建立网站需要花多少钱?
营销式网站制作方案,销售哪个网站招聘效果最好?
微信推文制作网站有哪些,怎么做微信推文,急?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
深圳网站制作的公司有哪些,dido官方网站?
建站之星在线客服如何快速接入解答?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何快速搭建高效香港服务器网站?
安云自助建站系统如何快速提升SEO排名?
如何通过WDCP绑定主域名及创建子域名站点?
如何选择高效稳定的ISP建站解决方案?
如何在IIS中新建站点并解决端口绑定冲突?
建站为何优先选择香港服务器?
如何安全更换建站之星模板并保留数据?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
,sp开头的版面叫什么?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
开封网站制作公司,网络用语开封是什么意思?
制作表格网站有哪些,线上表格怎么弄?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
,石家庄四十八中学官网?
TestNG的testng.xml配置文件怎么写
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
视频网站制作教程,怎么样制作优酷网的小视频?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
教程网站设计制作软件,怎么创建自己的一个网站?
江苏网站制作公司有哪些,江苏书法考级官方网站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。