UI 性能因素考虑
浏览器的最大并发连接数一般在4到6之间,首先了解影响加载的性能因素:
(1)下载的文件太大
(2)发出的请求太多
(3)请求相应不及时
针对这些因素,一般会考虑减少请求次数:
(1)对静态文件设置缓存事件
(2)页面设计尽量简洁
(3)合并文件(html,JS, css,图片..)
再细致一点:
(1)页面实现按需加载(分时加载)
- 先加载基本静态html框架
- 再加载css, render css
- 最后加载Js从服务端取得的数据,然后render到内容区
(2)页面提交,考虑异步执行
- 服务器端考虑页面‘轮询’操作,避免页面长时等待
- 服务器端缓存数据,避免把所有数据放到页面处理
- 简化对象大小,不要将后端完整对象返回到前端,按需返回
- 缓存静态信息,如用户登录信息,页面帮助信息...
(3)页面加载考虑多种优化方案
- 避免一次加载所有内容,用‘多线程’和‘异步’方式
- 没有在‘当前屏幕显示’,先不初始化,拖拽到当前屏幕在加载
一般将css在<head>标签加载,Js 在的<body>底部加载
优化方向:
请求数量 合并脚本和样式表 css sprites, 拆分初始化负载,划分主域
请求带宽 开启GZIP,精简JS code,移除重复脚本,图像优化
缓存利用 使用CDN,使用外部JS,CSS 添加Expire 头,减少DNS查找,配置ETag, 使AJAX可缓存
页面结构 样式顶部,js底部,避免页面加载阻塞,尽早刷新文档流输出
代码校验 避免CSS表达式,避免重定向
YUI Compress 压缩工具 -》 精简JS
服务器端安装GZIP自动压缩功能模块
CDN-》内容分发网络,能够实时地根据网络流量和各节点的连接,负载状况以及到用户的距离和相应时间等信息将用户请求导向到离用户最近的服务节点。
‘查找----替换’的思路,来实现主域的划分
总之,做前端开发一定要考虑浏览器兼容性和UI性能的设计,重要的是用户体验。
UI 性能因素考虑的更多相关文章
- Android UI性能优化详解
设计师,开发人员,需求研究和测试都会影响到一个app最后的UI展示,所有人都很乐于去建议app应该怎么去展示UI.UI也是app和用户打交道的部分,直接对用户形成品牌意识,需要仔细的设计.无论你的ap ...
- 使用Systrace分析UI性能
开发应用的时候,应该检查它是否有流畅的用户体验,即60fps的帧率.如果由于某种原因丢帧,我们首先要做的就是知道系统在做什么(造成丢帧的原因). Systrace允许你监视和跟踪Android系统的行 ...
- Unity UI性能优化技巧
本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...
- Android-优化UI性能(1)-降低主线程的堵塞时间
Android-优化UI性能(1)-降低主线程的堵塞时间 一 降低主线程的堵塞时间 Android已经提供了AsyncTask实现从主线程生成新的异步任务的方法. 定义并实现以下的类就可以(方法由系统 ...
- Android提高UI性能技巧
提高UI性能的方法事实上有非常多在实际的开发中都已经用到了,在此做一下总结. 1.降低主线程的堵塞时间 若一个操作的耗时较长(超过5秒),我们应该将其放入后台线程中运行.仅仅在须要改动UI界面时通知主 ...
- Android UI性能优化实战, 识别View中的性能问题
出自:[张鸿洋的博客]来源:http://blog.csdn.net/lmj623565791/article/details/45556391 1.概述 2015年初google发布了Android ...
- Android UI性能优化实战 识别绘制中的性能问题
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45556391: 本文出自:[张鸿洋的博客] 1.概述 2015年初google ...
- 控件UI性能调优 -- SizeChanged不是万能的
简介 我们在之前的“UWP控件开发——用NuGet包装自己的控件“一文中曾提到XAML的布局系统 和平时使用上的一些问题(重写Measure/Arrange还是使用SizeChanged?),这篇博文 ...
- 测试c语言函数调用性能因素之测试三
函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1, 调用函数帧指针 ...
随机推荐
- 【转】浅谈Nginx负载均衡与F5的区别
前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问 ...
- /dev/null简单入门
2>&1 /dev/null 将标准输入输出全部丢弃(表示2的输出重定向等同于1) 2>filename 把错误信息保存到filename 2>/dev/null >/ ...
- HDOJ 1297 Children’s Queue
版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...
- Spring的两种动态代理:Jdk和Cglib 的区别和实现
这是有意义的一天!自己研究一路畅通的感觉真爽 原理是参考大神的,代码手敲 一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处 ...
- tomcat源码阅读之BackupManager
一. 配置: <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOpti ...
- react-hot-loader 3.0于1.3的区别
现在react-hot-loader 3.0版本应该还是beta版本,不过没关系,还是可以正常使用,我在项目中用的是react-hot-loader 3.0.0-beta.7 版本,并没用发现任何问题 ...
- windows下安装python-Levenshtein
安装python-Levenshtein 报错 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Vi ...
- 学习大数据基础框架hadoop需要什么基础
什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...
- OpenWrt实现802.11s组网模式
参考 http://www.docin.com/p-277067204.html 无线网卡wlan0正常后,输入一下命令 iw dev wlan0 interface add mesh_iface t ...
- Swoole来实现实时异步任务队列
假如要发100封邮件,for循环100遍,用户直接揭竿而起,什么破网站!但实际上,我们很可能有超过1万的邮件.怎么处理这个延迟的问题?答案就是用异步.把“发邮件”这个操作封装,然后后台异步地执行1万遍 ...