提升混合应用页面打开速度的新思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tower1229
V2EX    分享创造

提升混合应用页面打开速度的新思路

  •  
  •   tower1229
    tower1229 2017-07-22 18:37:12 +08:00 2341 次点击
    这是一个创建于 3016 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们都知道混合应用的流畅性不如原生应用,除了不能像原生一样轻松驾驭各种狂拽酷炫的效果,混合应用还有一个难以消除的弱点在于页面打开速度上,如果有机会在同一台手机上直接对比的话,这种差距是肉眼都能直观感受到的,这主要是由于 web 页面每次打开前需要初始化,在那一瞬间需要完成 DOM 创建、资源下载、样式渲染、js 执行,这些时间消耗造成了按键按下与页面进场之间短暂的停顿,也造成了混合应用整体“不流畅,不跟手”的印象。

    为了尽可能解决这个问题,最近想到了一种新的优化思路,优化后在测试机上空白页面的打开速度较之前提升 100ms 左右,对于大量依赖 js 运行的页面提速效果更明显。思路并不复杂,就是先移除页面中所有的 js 资源,加速页面渲染速度,当页面开始进场动画后,再开始加载执行 js,充分利用了进场动画的时间,以缩短整个页面展现的时间,核心代码就是选择时机动态插入 js 节点部分,该方案已经应用于 HybridStart 项目,详细过程点此了解

    应用该方案后同时还解决了混合应用的另一个问题,那就是打开不同 APP 页面不再有速度差别了,之前产生的速度差别,主要是因为 js 代码可能产生异步请求或者生成 DOM 节点,这些耗时都不可预估,长的甚至以秒计算,优化后的页面完全排除掉 js 资源的干扰,渲染速度的差别就仅在于 DOM 渲染量的差别,而这个基本上任何页面都不会差太多,因此不同页面的打开速度也就基本一致了。

    最后安利一下HybridStart 项目,如果你也在用 apicloud 做混合应用,这一定是你的不二之选,很难想象开发体验能比这更好的了。另外 HybridStart 的开发原则之一是 UI 可剥离,我认为框架的 UI 跟功能绑定就是耍流氓,没错我说的就是 mui,没法想象怎么用 mui 做自定义风格的项目,这方面 HybridStart 是完胜的,使用 HybridStart 做项目完全不需要担心 UI 好不好改,因为你甚至可以一怒之下将自带 UI 删掉重写,完全不影响核心功能,当然了即便 UI 不是重点,HybridStart 的自带 UI 也足够满足普通 APP 项目需求了,而且附带 less 文件,只要是别太非主流的风格都能通过改变量实现。

    最后,虽然目前 HybridStart 是基于 apicloud 平台,但未来还会跟进 dcloud 平台,因为 HybridStart 的初衷就是跨平台,最初一版是脱胎于古老的 appcan 平台,在饱尝 appcan 之坑后,决心将其打造成一款跨引擎的混合应用开发框架,目的就是抹平不同平台的引擎 api 差别,减少平台迁移成本,就目前来看,apicloud 跟 dcloud 相比,还是稍逊一筹的。

    2 条回复    2017-07-23 15:23:55 +08:00
    momoda1
        1
    momoda1  
       2017-07-22 19:04:11 +08:00
    额,你这个只是去优化了视觉层面的效果,你说的 js、css、异步请求都可以通过离线包,预加载,预请求,缓存,首屏加载,骨架预渲染等的方式解决,做到秒开
    tower1229
        2
    tower1229  
    OP
       2017-07-23 15:23:55 +08:00
    @momoda1 嗯,你说的这些方式大概分两种,一是资源缓存,二是页面预加载,其中页面预加载是有效的,可以秒开,但具体到 apicloud 平台没有办法预加载页面,只能预加载 frameWindow ;资源缓存我认为没有效果,因为本来 js 就是本地文件,读取速度上已经是极限了吧,真正耗时的是 js 运行以及运行后的操作。在引擎不做优化的前提下,js 后置大概是前端能做的最有效的方式了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2760 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:50 PVG 15:50 LAX 00:50 JFK 03:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86