code push部署_从 cordova-hot-code-push-plugin 看端的缓存和更新

人类的本质是复读机,编码的本质是重复造轮子

1aa8de6276b31713d16a8afe0f87f497.png

在移动端hybird开发过程中,为避免必须联网和每次启动都重新从远端请求web资源等问题,会把资源一并打包到本地;但是每次修复和更新,漫长发布审核过程让人痛不欲生。如何快速更新修复这个严肃的问题,是必须要面对的。

但是呢,面对归面对,解决的办法已经很熟了。

就拿cordova为代表的webview入口地址为本地的混合开发来说,很久很久以前,有个叫达拉崩吧斑得贝迪卜多比鲁翁的勇士,啊呸,有个叫 cordova-hot-code-push-plugin 的插件,就给提供了热更新这个功能。即便它已经没有人维护。

首先从文档和使用入手;

How to use

cordova-hcp 

Where can be:

  • init - initialize project parameters, create default cordova-hcp.json file.
  • build - build project files, generate chcp.json and chcp.manifest files in the www folder. Prepare for deployment.
  • server - run local server that is used for local development process.
  • login - create login credentials that are used for deployment of project files on the remote server.
  • deploy - upload project files on the remote server.

文档上描述工具在如何使用并且发布到服务器都一并提供了,但是不同的都有不同的部署方式,可用可不用,依据个人情况。

只需要关注到更新的资源部署之前,Prepare for deployment。

cordova-hcp build

where:

  • [www_directory] - path to the directory with your web project. If not specified - www is used.

Command is used to prepare project for deployment and to generate plugin specific configuration files inside www folder:

  • chcp.json - holds release related information.
  • chcp.manifest - holds information about web project files: their names (relative paths) and hashes.

这个操作若无制定文件夹,默认在www文件,也就是cordova的web资源文件夹下生成 json & manifest 文件。

chap.json :描述了发布的内容的release 和version等操作的相关信息

{     "autogenerated": true,  "release": "2020.03.04-19.05.00",  "content_url": "https://download_path",  "update": "now"}

chcp.manifest :描述的是文件的路径和当前的hash

将这两个文件更新到服务器。

在cordova config.xml 增加配置项。

      

完成配置即可在App启动时候检查更新并且下载更新。

从上述配置的地址梳理流程,app启动 => chcp 对比 config.xml 配置地址的文件和本地文件 => 有更新则访问 json 配置的 url 将资源下载,同时更新本地 json => 启动时、直接或其它时机更新资源

这样就达到了web资源热更新。


插件的使用是实现具体就不多讨论了,铺垫了这么多只有最后这一小段是最有用,再给它浓缩一下,热更新的过程可以概括为:

  1. 检查更新
  2. 下载资源
  3. 更新时机

(好学的张三同学: 等等!um... 这个过程挺眼熟啊,是不是哪儿见过?)

其实这个过程也可以说是资源缓存的过程,协商永久缓存资源。说到缓存就想到浏览器http缓存,似乎也挺适用。暂不做展开。

说起来挺简单的思想,知道了拼了命都得找个地方用用才行,上完课当然得做练习啦。还就着这个cordova项目来说,web资源是更新了,那么原生资源需要更新的时候呢?是不是就可以自定义更新检查,下载原生包到本地,选择时机更新;由于App更新权限的问题,iOS下更新App也不一致,具体实现有偏差,chcp也提供检查app版本的回调。

或者在其它客户端(nw/electron,pos机)也可将流程思想应用。只要有端,那就有缓存和更新

d54c9da1a93331a0dc1a61ab581b10d5.png

归纳总结,原来站在巨人肩膀上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值