背景
由于项目里可能需要加载数十个wmts图层服务,可能会造成加载数据量过大,导致cesium加载缓慢,影响用户体验,于是就想办法提升加载速度。
整体思路
上网搜了一下这方面的问题,得到了一个关于cesium的调度器相关的答案。大致就是通过修改Cesium调度器的请求最大并发数量来提升加载速度。
官网链接:https://cesium.com/learn/cesiumjs/ref-doc/RequestScheduler.html?classFilter=RequestScheduler
再项目里把这几个属性依次打印出来为
50 6 {api.cesium.com:443: 18, assets.ion.cesium.com:443: 18, ibasemaps-api.arcgis.com:443: 18, tile.googleapis.com:443: 18, tile.openstreetmap.org:443: 18} true
可以看到maximumRequestsPerServer服务最大请求数量为6个。并不是官网里的18个。
打开f12 进行验证:
可以看到一次性进行了6次并发请求。相当于一次只能加载6块地图瓦片,这有可能是导致cesium加载wmts速度变慢的原因。
————————————————————————————————————————————
至于为什么官网默认为18 而打印出来为6这部分可以对源码进行全局查看搜索。
可以看到在cesium加载服务源码里把这个改为了6;
解决方法
- 在初始化球体时,设置调度器最大请求并发量:
Cesium.RequestScheduler.maximumRequestsPerServer = 18; // 设置cesium请求调度器的最大并发数量
- 注意调度器的第四个属性throttleRequests。上面我们打印出来时true。意思就是限制请求。如果改为false的话是否就不对请求进行限制?
Cesium.RequestScheduler.throttleRequests = false; //关闭请求调度器的请求节流
小结
上面的两种方法都是可行的。以上是我的个人见解,希望对大家能有帮助。