在讨论“基于HTTP协议的app缓存机制”这个专题前,先来了解下app客户端现有的缓存机制:
用户首次进入客户端首页时会从服务器获取最新数据,并将数据缓存至本地,如若不重启客户端,将不再向服务器获取最新数据。
这个缓存机制非常简单,发挥了一定的缓存作用,但是存在以下几点问题:
1.不够灵活,无法有效控制数据更新的时机
2.不够透明,app开发人员必须熟知这种缓存机制的具体实现细节
3.不够通用,每个页面/接口需要重复编写冗余的代码,无法在各个项目间进行移植
说到这里,我想我们需要引入一种基于架构的更加强大、更加完善的缓存机制,这个缓存机制是什么样子的呢?
其实很简单,我们每天都在使用,甚至我们离不开它-
浏览器,相信细心的你在使用它们时会有如下体验:
1.重复访问一个页面会打开得更快
2.有时网络掉线了仍然可以打开页面
3.作为技术人员,我们有时还碰到一个页面死活不肯更新的情况
浏览器种类很多:chrome、IE、firefox、Safari、operai等等,但无论何种浏览器它们都采用HTTP作为通信协议,
我们的app也不例外。app和浏览器一样在用户和服务器之间充当代理的角色,为用户做了很多隐性的操作,
缓存只是其中一项
(本文不试图介绍浏览器缓存机制的实现细节,有兴趣的同学可以查阅http白皮书)。
浏览器采取的缓存机制我们完全可以借鉴,那么是否有先驱已经将浏览器的缓存机制搬到app,并形成成熟可用的组件?
幸好,大牛们为开源付出了大量心血,有现成的解决方案,当然这一切还需要大量的测试和验证!
幸好,大牛们为开源付出了大量心血,有现成的解决方案,当然这一切还需要大量的测试和验证!
1.HTTP Response Caching for Java and Android
2.HTTP Response Caching for ios