cesium-Web页面优化总结

介绍

在介绍如何优化之前,我们先要了解一下cesium需要优化的几种情况(目前我遇到的一些情况)

  1. 直接加载cesium的时候就开始卡顿不流畅(还未加载大量数据)
  2. cesium在vue等单页面应用中使用的时候,刚开始加载还正常,但随着刷新、数据交互等操作后开始卡顿
  3. cesium在加载3dtiles(这里主要是说倾斜摄影模型)时,随着加载的数据多了后开始明显卡顿

这三种是我目前遇到的问题,后面有其他的问题我再更新进来,欢迎大家一起探讨

解决步骤

问题一

针对第一个问题,这个就比较明显了。

一般是老电脑没有独立显卡,使用核心显卡来加载,性能不够造成的,这个直接换电脑就行!(我之前公司的电脑就不太行,后来直接使用自己的笔记本来开发了)

还有一种情况,就是我们的电脑有独立显卡,配置还不错,但还是有些卡。这个可能是由于我们没有配置好电脑显卡设置造成的。我们需要让浏览器使用独显来渲染webGL数据。

这里我以我现在用的电脑为例:

  • 显卡为GTX2060super
  • 系统为win11
  • 处理器为i5-7400

在电脑右下角有个英伟达显卡驱动图标

右击打开驱动设置

选择管理3D设置

这里我们可以全局设置所有的应用都使用独立显卡来渲染(费电),也可指定应用来使用独显,这里我们指定程序

我们将浏览器添加到程序设置中(如果你在下拉菜单中没有找到),让独立显卡来管理(优先使用独立显卡)

加入管理后,还可以设置参数来调优,这里我就不介绍了,有兴趣可以百度看看

问题二

在vue项目中使用cesium时,我们习惯让vue来管理对象,所以就将cesium交由vue管理。

vue的数据双向绑定导致Cesium相关的对象一直被监听。

一般Vue项目内存泄露常发生在某些地方我们引用的第三方库自己创建和维护了DOM,所以Vue在页面卸载时虽然这些对象的引用都释放了,但是因为这些对象自身关联了DOM所以内存无法释放。

解决方法也很简单,我们把cesium对象从vue中提取出来。

// cesium交给window对象管理
window.viewer = new Cesium.Viewer('cesiumContainer', {});
// 数据定义在外面
let dataSource = null
  • 不要把任何的cesium对象放在data中监听,因为在data中的变量 ,vue会劫持数据 ,导致迟缓。
  • vue组件的data选项,只存储和UI关联的数据,没关联的一定不要存储在data选项里面,提出Vue对象作用域。

问题三

我们在加载3dtiles倾斜摄影模型的时候,如果使用默认的配置

new Cesium.Cesium3DTileset({url: '../3dtiles/chuangzhuang/tileset.json',modelMatrix: Cesium.Matrix4.fromArray([1, 5.551115123125783e-16, 5.898416033378595e-9, 0, -6.106226635438361e-16, 1, -1.1355608731111744e-8, 0, -5.898416061134171e-9, 1.1355608731111744e-8, 0.9999999999999999, 0, 9.912469893228263, -19.08345020748675, -14.613607150502503, 1]),});

可能会随着数据的加载,页面变得越来越卡,内存占用越来越高

这个时候我们需要修改一下Cesium3DTileset的配置,来优化加载,提升流畅度,配置如下

new Cesium.Cesium3DTileset({url:tilesUrl + '/3dtiles/chuangzhuang/tileset.json',modelMatrix: Cesium.Matrix4.fromArray([1,5.551115123125783e-16,5.898416033378595e-9,0,-6.106226635438361e-16,1,-1.1355608731111744e-8,0,-5.898416061134171e-9,1.1355608731111744e-8,0.9999999999999999,0,9.912469893228263,-19.08345020748675,-14.613607150502503,1]),skipLevelOfDetail: true,baseScreenSpaceError: 1024,maximumScreenSpaceError: 256, // 数值加大,能让最终成像变模糊skipScreenSpaceErrorFactor: 16,skipLevels: 1,immediatelyLoadDesiredLevelOfDetail: false,loadSiblings: true, // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋cullWithChildrenBounds: true,cullRequestsWhileMoving: true,cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除preloadWhenHidden: true,preferLeaves: true,maximumMemoryUsage: 128, // 内存分配变小有利于倾斜摄影数据回收,提升性能体验progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊dynamicScreenSpaceErrorDensity: 0.1, // 数值加大,能让周边加载变快dynamicScreenSpaceErrorFactor: 1, dynamicScreenSpaceError: true // 有了这个后,会在真正的全屏加载完之后才清晰化房屋});

cesium-Web页面优化总结相关推荐

  1. web页面优化之动态加载js和文件

    关于按需加载js,从而提高页面加载性能: 以京东商品详情页面为例: 首次打开时,会加载一部分js,当下拉滚动条时,会促发事件,从而以jsponp形式异步加载一些js文件,如评论调用的js文件: htt ...

  2. Web前端优化最佳实践及工具集锦(如减少页面加载时间)

    前端的性能对于一个Web应用来说非常重要,如果一个Web应用的页面加载速度非常快.对于用户的操作可以及时响应,那么产品的用户体验将会极大地提升.下图显示了页面加载速度对于用户体验的影响. 你的Web页 ...

  3. Web前端优化最佳实践及工具集锦

    摘要:前端的性能对于Web应用的用户体验来说非常重要.不要以为你的Web应用的性能已经足够好了,其实还会有很多可以提升的地方.本文将介绍Google和雅虎关于前端优化的最佳实践以及工具,你可以逐一检验 ...

  4. 干货 | Web前端优化及工具集锦

    原文地址:http://www.csdn.net/article/2013-09-23/2817020-web-performance-optimization   前端的性能对于一个Web应用来说非 ...

  5. web性能优化及seo

    web性能优化 为什么要做性能优化? 提高用户体验,加速页面的相应速度 提高用户交互性,操作体验更好 为搜索引擎服务 常用的技术 css精灵图片 压缩图片大小 合并css js文件 减少http请求的 ...

  6. 小tip: base64:URL背景图片与web页面性能优化(转载)

    今天在代码看到css北京图片使用了base64格式表示图片,SO,百度了一下.感觉完全可以解释了. 一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在H ...

  7. web前端页面优化——个人见解

    web前端页面优化,我们从JavaScript.css.html这3个方面说下,我的见解,希望大神们能有刚好优化方法,一起探讨. 一.  有关javascript方面 优化见解. 1. 首先举个例子: ...

  8. web页面性能优化及SEO优化

    web页面性能优化 前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网 ...

  9. web页面的性能优化以及SEO

    前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如 ...

  10. web页面的性能优化以及SEO(搜索引擎优化)

    Web页面的性能优化 研究表明:用户最满意的打开网页的时间是2-5秒,如果等待超过5秒,99%的用户会关掉页面. 一.尽量减少前端HTTP请求 1,能使用icon不适用图片,实在避免不了要使用图片,就 ...

最新文章

  1. MySQL 字段数据类型/长度
  2. 第二章 单变量线性回归-机器学习老师板书-斯坦福吴恩达教授
  3. Bootsrap基本应用
  4. 全新出击!《Java开发手册(嵩山版)》解读手册升级下载
  5. [html] iframe在更改了src之后,不出现后退或者前进按钮怎么解决?
  6. 作者:石在辉(1983-),男,中移(苏州)软件技术有限公司大数据产品部方案架构师。...
  7. linux db2在线备份,DB2 pureScale在线备份恢复实例
  8. 在jQuery代码中,实现转跳
  9. C++相对于C语言更加规范(1)
  10. mysql触发器新增或修改_mysql触发器实例 插入数据前更改数据值
  11. 关于NLSSORT和NLS_SORT的用法
  12. 桃子CCD视觉高速喷射点胶机,用它你就会爱上它
  13. 8B/10B编码基本原理
  14. 树莓派CM4官方底板的双路摄像头使用
  15. Lambda 表达式
  16. linux 源码编译 ./configure 的配置和用法
  17. 【论文阅读】【综述】3D Object Detection 3D目标检测综述
  18. vue版本控制器nvm安装使用教程
  19. 部署安装cobbler,实现批量安装CentOS7、Ubuntu17.04、Ubuntu18.04(快捷版)
  20. 活期利率是怎么计算的?

热门文章

  1. 航天晨光:永中DCS与原有OA系统整合,文件阅览效率大幅提升!
  2. 用计算机算出女儿身高,孩子身高预测计算器准吗
  3. matlab中clear;close;clc的作用说明
  4. Xcode7 launchscreen.storyboard真机启动黑屏,且不能适配,模拟器没问题
  5. 泰山OFFICE技术讲座:微软雅黑字体故意设置的坑,粗体错误
  6. .NET周报【11月第1期 2022-11-07】
  7. 将7z分卷合并成一个7z文件,然后就可以使用7z或rar软件等打开
  8. 【CSS 用户界面属性 (Basic user interface)】
  9. 王垠四十行代码mark
  10. VLAN访问控制列表