Android 客户端缓存机制
Android客户端的缓存机制能很好的提高客户端的显示速度,节省不必要的流量请求,为用户提供良好的体验等优点。虽然Android缓存有上述所述的好处,但并不是所有的网络请求,所有的业务逻辑都适合使用缓存机制!如,电商中常有的秒杀功能要求数据实时性特别强,几毫秒的缓存延迟都会严重影响数据的同步,给用户错误的库存及倒计时的体验!那什么情况下适合运用缓存机制了,其实也好理解,就是对于数据实时性要求不高,对数据买保鲜性要求较低的业务请求,我们可以考虑使用缓存机制来进行数据缓存,充分利用缓存带给我们的好处!
下面争对我开发的电商Android客户端的业务,来说明一下请求是否适合使用缓存:
业务功能 | 是否适用缓存 | 缓存内容 | 说明 |
---|---|---|---|
轮播图 | 是 | Json数据 | 数据不会经常改动 |
快速入口 | 是 | Json数据 | 数据及跳转的地址不会经常变动 |
秒杀 | 否 | – | 时实性较强,需要与后台数据保持高度的实时性 |
专题 | 是 | Json数据 | 实时性要求不高 |
行业精选 | 是 | Json数据 | 实时性要求不高 |
大数据推荐 | 否 | – | 实时高,根据用户的浏览历史推出不同的商品 |
普通商品详情 | 否 | – | 现有基础上不能缓存,若是能把请求进行细分,可以考虑部分缓存 |
秒杀商品详情 | 否 | – | 实时性较强,需要与后台数据保持高度的实时性 |
显示广告 | 是 | Json数据 | 这个修改不会过于频繁,若要修改频繁可以设置一个较短的失效时间 |
##缓存方案##
###缓存方案的流程图如下所示:###
###缓存方案实现简单介绍:###
(1)在手机内存中进行缓存,初步设想为Map结构,缓存是传入关键字(key)和要缓存的数据(例如为Object),使用缓存时直接根据关键字(key)来获取缓存中的数据(Object),再根据Object中的属性更新界面显示。
(2)若在(1)中取出的Object为空,说明内存中没有缓存key所对应的数据对象,我可以从二级缓存数据库中进行读取,并把缓存更新内存缓存中。
(3)若在(2)中也没有读取到Key所对应的数据,则发送网络请求从后台服务器端获取数据,更新界面及手机内存缓存和数据库缓存,为下次使用缓存提供数据支撑!