技术产品中心 - 强一洲
2017/10/18
简介
APP离线化h5页面静态资源的方案,和浏览器缓存对比,具有如下特点:
- 可控资源更新(重新打包即可);
- 资源可选择性缓存(可选择是否缓存html);
- 单文件缓存更小(可选择性对html、css等做代码压缩,及zip压缩);
- 避免重复资源缓存,更节约空间(同资源不同url会去重);
如何接入?
-
本地安装 Nodejs 运行环境,可从官网下载安装最新版;
-
安装 cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
-
安装打包工具:
cnpm install -g iqy-web-crawler
-
执行打包命令:
offc http://www.example.com/some/h5/page -U=someone@qiyi.com -P=12,10 -E=test -H -M
参数说明
参数
|
简写
|
说明
|
必须
|
---|---|---|---|
参数
|
简写
|
说明
|
必须
|
--username | -U | 你的公司邮箱 | Y |
--platforms | -P |
平台代号,多平台用英文逗号隔开。各平台代号如下:
|
Y |
--env | -E | 打包环境,默认是 --env=test 是测试环境,生产环境请写 --env=online | Y |
--html | -H | 是否缓存html,默认不缓存。如果是服务端动态渲染的页面,不要加该选项 | N |
--minify | -M | 是否压缩代码,默认不压缩。生产环境压缩前请先在测试环境下测试,如果有异常就不要设置这一项 | N |
如何打包批量url?
-
在本地创建一个文件 entries.config.js:
entries.config.js123456789module.exports = {
max_retries: 5,
retry_interval: 3000,
urls: [
'http://example.com/index.html'
,
'https://www.other.com/'
,
'http://blabla.com/whatever/path'
]
}
参数说明:
名称取值涵义名称取值涵义max_retries >=0的整数 (每个失败的url)最多重试次数 retry_interval >=0的整数 (每个失败的url)重试间隔毫秒数 urls 字符串数组 包含需要打包的url的数组 -
执行打包命令:
offc patch -U=someone@qiyi.com -P=12,10 -E=test -H -M
万一出错如何回退?
-
执行打包命令:
rbc http://www.example.com/some/h5/page -P=12,10 -E=test
该命令会回退指定页面url包含的所有资源:
- 如果它使用的某个资源也被其他页面使用,那放心不会被删除
- 参数同打包命令,但是只需要指定 -P 和 -E,因为需要重新打包
如何更新缓存?
-
HTML中用到的资源路径加版本号(建议更改文件名)
-
重新执行打包命令
建议直接更改文件名。如果没有加版本号,目前资源更新时机为APP启动时。所以客户端必须重启APP才会生效。后续会提供强制更新缓存的方式,敬请关注!
如何验证离线成功?
-
Android
-
从 此链接 下载安装最新 Android 开发包
如果上面的链接里没有 debug apk 的话,就从历史构建(左侧 Build History)中找。
-
安装 debug apk
-
启动 APP 进入首页,在搜索栏输入 #QY#1012 后搜索。字母都大写,后四位数字是当前月日
-
不管搜索结果是什么,取消,打开随便一个 APP 内的 h5 页面,在标题栏连续触碰 5 次
-
关闭当前 Webview
-
进入需要验证离线的页面
-
看到如下Toast,即离线成功!
-
-
IOS
-
扫描以下二维码打开调试开关
-
进入需要验证离线的页面
-
看到如下Toast,即离线成功!
-
下一版本计划
预期新特性:
-
- 改进过期策略
- 识别轻微改动的带版本号的同一文件
预计上线时间:待定