基于cocos2dx -js h5项目优化记录

在记录优化内容前选搞清楚web渲染流程的四个主要步骤:

  1. 解析HTML生成DOM树 - 渲染引擎首先解析HTML文档,生成DOM树
  2. 构建Render树 - 接下来不管是内联式,外联式还是嵌入式引入的CSS样式会被解析生成CSSOM树,根据DOM树与CSSOM树生成另外一棵用于渲染的树-渲染树(Render tree),
  3. 布局Render树 - 然后对渲染树的每个节点进行布局处理,确定其在屏幕上的显示位置
  4. 绘制Render树 - 最后遍历渲染树并用UI后端层将每一个节点绘制出来

以上步骤是一个渐进的过程,为了提高用户体验,渲染引擎试图尽可能快的把结果显示给最终用户。它不会等到所有HTML都被解析完才创建并布局渲染树。它会在从网络层获取文档内容的同时把已经接收到的局部内容先展示出来。

优化思路:

  为了保障首屏内容的最快速显示,就需要做资源的拆分,那么以什么粒度拆分、要不要拆分,不同页面、不同场景策略不同。以达到渐进式页面渲染

优化内容:

1.html文件内容整理:

  1.html文件中剥离css代码和非必要js代码,尽量不要融合到一起,毕竟多种代码混合会给你管理页面代码带来极大的负担。而且html文件内容复多少会影响html页面加载速度。

  2.html文件中加载css文件

    只下载和首屏页面布局有关文件,其他css文件等游戏启动后在空闲时间偷偷下载或者使用前夕再下载。因为渲染时DOM树的生成过程中可能会被CSS的加载执行阻塞

  3.html文件中JavaScript 应尽量少影响 DOM 的构建,如果是引用外部插件或者平台sdk则遵循以下原则:

    只下载和初始化所需有关文件(如vconsole插件),其他js文件等游戏启动后偷偷下载或者使用前夕再下载。因为渲染时DOM树的生成过程中同样可能会被JS的加载执行阻塞

    如果服务器支持合并请求,就把js和css合并请求。来提高性能。因为同一域名下的请求有一定数量限制,浏览器下载静态文件超过限制数目的请求会被阻塞

 2.压缩js

  webpack合并所有js文件

3.压缩css

  在线压缩工具压缩css

4.压缩图片

  打包脚本集成pngquant和webp,压缩纹理,安卓使用webp、ios不变(注:小图不建议压缩。图片大小差异不大,还额外增加了解码耗时。数量不多忽略)

5.sdk或插件(含对应css文件)集成

  从主包分离外部sdk文件、插件文件。添加js插件管理文件,html初始化下载js文件(包含:游戏主包js 文件、插件管理器js文件)。 初始化依赖插件或者SDK,插件管理器启动时直接下载,非初始化依赖文件在主包下载完成后,适时按渠道所需下载。加速主包下载和首屏创建、

  插件携带css文件同理。

6.逻辑整理

  独立、规范游戏流程逻辑。把能异步的同步流程改为异步执行,减少游戏流程耗时(如连接登录或者更新服务器的时间,异步下载和预览登录资源)

7.Ui渲染相关

  部分需要同时渲染大量ui节点的界面改为分帧加载的方式,加速页面呈现速度

文章都是学习过程中的总结,如果发现错误,欢迎留言指出~

原文地址:https://www.cnblogs.com/xyptechnology/p/11720850.html

时间: 2024-10-07 23:47:09

基于cocos2dx -js h5项目优化记录的相关文章

java web项目优化记录:优化考试系统

考试系统在进行压力测试时发现,并发量高之后出现了按钮无反应,试题答案不能写到数据库的问题,于是针对这些核心问题,进行了优化. 数据库方面: Select语句:Select * from TEB_VB_XZTRecord改为select 必须的列 form TEB_VB_XZTRecord,之前看的教学视频里就讲过最好别用*,由于查询了不必要的列,所以导致了低效率. insert优化:考试业务的原因,需要把查询出来的试题,一条条的插入到数据库中.优化前:循环+每次插入一条的insert语句.优化后

基于recorder.js H5录音功能

兼容性 1.Chrome,FF,Edge,QQ,360(注:现有IE和Safari全版本不兼容) 2.其中Chrome47以上以及QQ浏览器强制要求HTTPS的支持 3.请尝试使用FF,Edge,360,浏览器进行体验,或将项目下载到本地通过localhost的方式 下载 recorder.js 前往 https://github.com/OmegaMibai/SoundRecording/tree/master/recorder/js 核心文件 核心代码 html <div id="ma

基于node.js 的 websocket的移动端H5直播开发

这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运行http服务,手机端直接运行http://ip:8000/mpegts.html 即可看到推流过来的视频 新起一个终端运行 npm run ws-server,服务启动后,即可以通过ffmpeg进行推流. 推流过程如下: 推流视频文件: ffmpeg -re -i E:\2.mp4   -code

Cocos2dx+lua合适还是Cocos2dx+js合适?

问题: 开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适 百牛信息技术bainiu.ltd整理发布于博客园 回答: 作者:廖宇雷链接:https://www.zhihu.com/question/21130385/answer/18485625来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2014.02更新:请放心选择 Lua 吧.触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的

[转] 钉钉的H5性能优化方案

对于一个H5的产品,功能无疑很重要,但是性能同样是用户体验中不可或缺的一环.原本H5的渲染性能就不及native的app,如果不把性能优化做起来,将极大地影响用户使用产品的积极性. 用户感受 当用户能够在1-2秒内打开H5页面,看到信息的展示,或者能够开始进行下一步的操作,用户会感觉速度还好,可以接受:而页面如果在2-5秒后才进入可用的状态,用户的耐心会逐渐丧失:而如果一个界面超过5秒甚至更久才能显示出来,这对用户来说基本是无法忍受的,也许有一部分用户会退出重新进入,但更多的用户会直接放弃使用.

基于Node.js的强大爬虫 能直接发布抓取的文章哦

基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什么linux都行,我用的是CentOS 6.5: 2)装个mysql数据库,5.5或5.6均可,图省事可以直接用lnmp或lamp来装,回头还能直接在浏览器看日志: 3)先安个node.js环境,我用的是0.12.7,更靠后的版本没试过: 4)执行npm -g install forever,安装f

基于Node.js和express的日志服务器

首先,这篇文章学习的意义大于实际价值.如果按我的本意,直接在游戏中加入友盟,信息更全,而且非常简单.不过总是有很多人会凭着自己过时或者错误的经验去说别的东西多么不好,自己的东西多么好.好在,我自认为学习能力非常强,解决问题的能力也非常强.真让我做一个服务器+前端,也是在兴趣之中和能力之内. 一.Node.js简介 原本javascript纯粹是一个前端语言,干的基本上是让网页更丰富更炫的事情.不过Node.js出现后,javacript成为了前后端通吃的语言.比如网易的pomelo就是基于Nod

H5 项目常见问题汇总及解决方案

H5项目常见问题及注意事项 Meta基础知识: H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 //一.HTML页面结构 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> // width    设置viewport宽度,为一个正整数,或字符串'devi

[转]H5项目常见问题汇总及解决方案

html { line-height: 1.6 } body { font-family: -apple-system-font, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; background-color: #f3f3f3; line-height: inherit } body.rich_media