本地缓存

来源:互联网 发布:宣城太守知不知翻译 编辑:程序博客网 时间:2024/05/02 04:43
  • 1.使用场景

    • 1)提高访问服务器接口的速度,测试场景:2G/3G网络环境下,以模拟用户真实体验
    • 2)影响因素:双向数据传输速度,
    • 3)可行性的措施:减少接口的调用次数 -> 整合多次为一次;措施二,调用一次服务端接口后,在规定地一个时间段内不再调用,保存数据在APP 本地上,也就是缓存时间段内,扔使用上次获取到的数据。
    • 4)非实时更新,重复数据,缓解与服务器数据交互的压力,提供一定的离线浏览。
      https://github.com/saymagic/PictureThreeCache
      http://blog.csdn.net/lnb333666/article/details/8460159
  • 2.设计场景

    • 1)缓存时间长短设置,有一个推荐标准:长【5-10分钟】即时性高低,数据更新变动,如产品描述,而产品价格:不缓存。同一个接口,时间参数不同,有所区别。
    • 2)请求方式:适合获取数据的get,不适合修改修改数据的post;
    • 3)缓存地点:sd卡中,仅限于sd卡的用户中,存放标准/方式:以URL格式作为KEY,存放缓存数据,放在url.xml中,设置缓存时间Expired,每一个接口都配置,post设置为0,意味着不需要缓存
    • 4)写一个单利模式的工具服务端类:CacheManager,两边都会有更新,有强迫症的可以由产品经理来设计一个按钮实现强制刷新:把过期时间设置为0
  • 3.图片缓存【基本原理:三级缓

    • 1.1.第三层缓存是在手机内存中的本地文件,这种缓存读取速度非常快,但当图片内存被回收时,图片自然就不会存在了,对图像而言,可以用LruCache实现,当ImageView需要url1对应的图片,那么可以从LruCache中返回url1对应Bitmap,如果为null再去本地找。
    • 1.2.第二层则是在手机硬盘层,是会缓存到sd卡。
    • 1.3.第一级别是网络层,在本地文件缓存中查找,如果找到了就不用去网络中拉取了。如果没有找到,再从网络中获取,并且视情况保存在本地缓存目录下。即根据图片的url地址可以找到服务器上相应图片,会消耗流量。
      http://www.trinea.cn/android/android-imagecache/
      https://github.com/Trinea/android-common
      http://www.trinea.cn/android/android-imagesdcardcache/
  • 4.可参考的缓存策略

    • 1)每次拉一个或多个JSON包丢在本地的某个文件里就是了,JSON包里可以包含Time标签,更新就是你手动或自动刷新得来的结果么,也就是拉一次包。
    • 2)差量更新:每一条动态都有一个version值,拉的时候把本地version上传给服务器,服务器对比version值,如果不同则下发
    • 3)
    • 4)数据库缓存:缓存的数据库是存放在/data/data//databases/目录下,是占用内存空间的。个人建议把url作为唯一的标识。下次下载的时候根据url先从数据库中查询,如果查询到当前时间并未过期,就根据路径读取本地文件,从而实现缓存的效果,sqlite ,存储对应的URL ,时间戳 ,内容。
    • 5)文件缓存:使用File.lastModified()方法得到文件的最后修改时间,与当前时间判断是否过期,从而实现缓存效果,建立一个文件夹,并且以每个URL对应的hashCode码为文件名,计算超时值时可以直接使用当前时间 - 文件的修改时间。
    • 6)图片文件内容是不变的,一般存在SD卡上直到被清理,我们是可以永远读取缓存的。配置文件内容是可能更新的,需要设置一个可接受的缓存时间。
    • 7)Android网络缓存:不同环境下的缓存时间标准不一样:
      7.1. 无网络环境下,我们只能读取缓存文件,为了应用有东西显示,没有什么过期之说了。
      7.2. WiFi网络环境下,缓存时间可以设置短一点,一是网速较快,而是流量不要钱。
      7.3.3G流量环境下,缓存时间可以设置长一点,节省流量,就是节省金钱,而且用户体验也更好。
      http://blog.csdn.net/erjizi/article/details/50502565
  • 8)硬盘外存缓存:Android DiskLruCache缓存完全解析
    http://blog.csdn.net/timmobile/article/details/49887789

参考文档
http://blog.csdn.net/lnb333666/article/details/8460159
https://www.zhihu.com/question/28019694
https://github.com/wyouflf/xUtils
http://www.trinea.cn/android/android-http-cache/
https://github.com/Trinea/android-common

0 0
原创粉丝点击