这是一个苦涩的懊恼:大型 3D 场景结构复杂,对精度要求高,由此产生大量数据读取。为此,ThingJS 技术团队胜利研发出 浏览器惯例长期缓存长久化技术,大幅升高 Web 端数据传输压力,优化大型场景的加载体验,这一性能现曾经测试结束上线。
这一基于浏览器的本地缓存性能,由 ThingJS 平台提供的 thing.cached.min.js 库封装提供,依照 JS 脚本提供的代码执行加载本地 3D 场景。
要留神的是,ThingJS 平台的场景加载都有首次惯例读取过程,第二次才开始执行本地缓存命令,其加载速度飙升,令人惊喜!
以上三维场景示例的测试结果表明,首次加载至多须要 62 秒,启用本地缓存性能之后,大型 3D 场景加载仅用 19 秒,性能提速 62%!具体的性能取决于电脑网络或开发环境的综合因素,能够手动实际一下~~ 据说有人体验了飙升至 10 倍的加载速度!
以下是具体的操作步骤:
1、援用 thing.cached.min.js 文件封装库
2、第一次加载场景,先把文件后缀为’glb’,‘gltf’,‘bin’,‘json’,‘jpg’, ‘png’等模型资源贮存到缓存中
3、之后的加载优先从缓存里读取数据,目前仅反对模型类的文件对象,后续会有扩大。
代码示例
THING.Utils.dynamicLoad('https://www.thingjs.com/static/plugins/thing.cached.min/1.1.0/thing.cached.min.js',
function () {
// 初始化代码
if (typeof CachedDownloader !== 'undefined') {CachedDownloader.getInstance().onRequest = function (url) {var extensions = \['glb', 'gltf', 'bin', 'json', 'jpg', 'png'\];
var extension = url.getExtension();
return extensions.indexOf(extension.toLowerCase()) === -1 ? false : true;
}
}
})
浏览器缓存过程中,引入场景预览脚本能够进行动静旋转,留神不同的场景有辨别,例如园区场景或地图场景。
1、如果引入该脚本是预览园区,初始化办法示例为:init(app,‘scene’, null)
2、如果引入该脚本是预览地图,则应在援用地图组件脚本 complete 回调中援用。
代码示例
init(app,‘city’, event.object)
THING.Utils.dynamicLoad(\['/uploads/wechat/5oiR5pyJ5pyA6ZW/55qE572R5ZCN5LiN5L+h5L2g5pWw5pWw/file/ScenePreview/AppPreview.js'\],
function () {init(app, 'scene', null); // 执行初始化
}
)
点击观看演示 demo
进入 ThingJS 官方论坛