- iOS网络资源缓存引擎背景:
1、随着手机性能提高,hybrid app已经成为趋势(app使用原生代码编写的框架,大多数点击操作都打开html页面)。
2、加载网页时需要实时性。
3、加载网页时需要跟打开原生应用一样快速响应。
为了达成这些目的,让hybrid app更接近原生性能,我们从打开页面的缓存入手,解决影响加载慢,的主要因素———网络因素。但是又可以实时的更新页面。
- 技术价值
1.推进hybrid app开发技术,使得其媲美原生应用,减少开发成本。
2.提高加载效率
3.保证实时性
4.保证可操作性
5.减少访问网络资源所用时间,提高用户交互体验。
- 主要解决的问题:
1.减少304。
2.降低304的优先级。(发出的304请求不影响加载页面)
3.一定要有内容加载。即,无论如何,页面都必须要有内容
- 方案介绍(初步的简陋的方案)
1、提供资源包下载的接口,下载后可将资源解压至本地、或打包成应用的时打包进去。
2、拦截系统的webview的load请求和get请求。
3、若拦截的请求在第1步的资源包中得匹配,则返回缓存中的文件。并且同时异步发出请求检查该资源是否更新。
4、可以设置检测资源包是否有更新。然后下载更新至本地。
流程如下所示:
|
网络资源缓存引擎 |
原生默认 |
application cache |
首次打开页面 |
加载本地页面(异步更新资源) |
从网络请求 |
从网络请求 |
非首次打开页面 |
加载本地页面(异步更新资源) |
检查cache是否有效,协商缓存。 |
加载缓存,后台去更新 |
缓存可控性 |
完全可控,多样化管理。对于客户端开发人员透明 |
依赖于系统的缓存,管理不灵活,需要客户端开发人员处理。 |
依赖于配置文件,配置文件麻烦,需要客户端开发人员处理。 |
更新速度 |
下一次打开有效 |
马上生效(网络差会白屏) |
下一次打开有效 |
缓存空间 |
一份 |
一份 |
多份 |
更新数量 |
可以预先批量更新,打成资源包(如:活动页面) |
访问谁、更新谁 |
访问谁、更新谁 |
未完。。。。。待续。。。。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于