初始渲染缓存工作原理小程序页面的初始化分为两个部分。
在启动页面时,尤其是小程序冷启动、进入第一个页面时,逻辑层初始化的时间较长。在页面初始化过程中,用户将看到小程序的标准载入画面(冷启动时)或可能看到轻微的白屏现象(页面跳转过程中)。 启用初始渲染缓存,可以使视图层不需要等待逻辑层初始化完毕,而直接提前将页面初始 data 的渲染结果展示给用户,这可以使得页面对用户可见的时间大大提前。它的工作原理如下:
利用初始渲染缓存,可以:
支持的组件在初始渲染缓存阶段中,复杂组件不能被展示或不能响应交互。 目前支持的内置组件:
自定义组件本身可以被展示(但它们里面用到的内置组件也遵循上述限制)。 静态初始渲染缓存若想启用初始渲染缓存,最简单的方法是在页面的 json 文件中添加配置项 "initialRenderingCache": "static" :
如果想要对所有页面启用,可以在 app.json 的 window 配置段中添加这个配置:
添加这个配置项之后,在手机中预览小程序首页,然后杀死小程序再次进入,就会通过初始渲染缓存来渲染首页。 注意:这种情况下,初始渲染缓存记录的是页面 data 应用在页面 WXML 上的结果,不包含任何 setData 的结果。 例如,如果想要在页面中展示出“正在加载”几个字,这几个字受到 loading 数据字段控制:
这种情况下, loading 应当在 data 中指定为 true ,如:
而不能通过 setData 将 loading 置为 true :
换而言之,这种做法只包含页面 data 的渲染结果,即页面的纯静态成分。 在初始渲染缓存中添加动态内容有些场景中,只是页面 data 的渲染结果会比较局限。有时会想要额外展示一些可变的内容,如展示的广告图片 URL 等。 这种情况下可以使用“动态”初始渲染缓存的方式。首先,配置 "initialRenderingCache": "dynamic" :
此时,初始渲染缓存不会被自动启用,还需要在页面中调用 this.setInitialRenderingCache(dynamicData) 才能启用。其中, dynamicData 是一组数据,与 data 一起参与页面 WXML 渲染。
从原理上说,在动态生成初始渲染缓存的方式下,页面会在后台使用动态数据重新渲染一次,因而开销相对较大。因而要尽量避免频繁调用 this.setInitialRenderingCache ,如果在一个页面内多次调用,仅最后一次调用生效。 注意:
|
Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )
GMT+8, 2024-11-24 12:12 , Processed in 0.016438 second(s), 18 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】