您的位置:首页 > Web前端

如何进行前端性能优化(转)

2017-07-19 19:13 295 查看
前端性能优化含义: 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度。

前端性能优化意义:在构建web站点的过程中,任何一个细节都有可能影响网站的访问速度,如果不了解性能优化知识,很多不利网站访问速度的因素会形成累加,从而严重影响网站的性能,导致网站访问速度变慢,用户体验低下,最终导致用户流失。

从浏览器发起请求到页面正常浏览有哪些阶段?
预处理——> DNS域名解析——> 与ip地址对应的服务器发起建立tcp连接——> 发起请求——>
等待响应——> 接受数据——> 处理元素——>
布局渲染

内容层面:

1.DNS域名解析优化(DNS缓存、减少DNS查询、keep-alive、适当的主机域名)

2.避免重定向

3.切分到多个域名

4.杜绝404错误
网络传输阶段:

1.减少传输过程中实体的大小

   1.1 缓存

   1.2 cookie优化

   1.3 文件压缩

2.减少请求的次数

   2.1 文件适当合并

   2.2 雪碧图

3.异步加载

4.预加载、延后加载、按需加载
渲染阶段:
1.js放底部,css放顶部

2.减少重绘和回流

3.合理使用Viewport 等meta头部

4.减少dom节点

5.BigPage
脚本执行阶段:

1.缓存节点,尽量减少节点的查找

2.减少节点的操作(innerHTML)

3.避免无谓的循环,break、continue、return的适当使用

4.事件委托

====================================================================================================================================

代码层面:避免使用css表达式,避免使用高级选择器,通配选择器。
缓存利用:缓存Ajax,使用CDN,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等
请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载。
请求带宽:压缩文件,开启GZIP,
代码层面的优化
用 hash-table
来优化查找
少用全局变量
用 innerHTML
代替 DOM
操作,减少 DOM 操作次数,优化
javascript 性能

用 setTimeout
来避免页面失去响应
缓存DOM节点查找的结果
避免使用CSS Expression
避免全局查询
避免使用with(with会创建自己的作用域,会增加作用域链长度)
多个变量声明合并
避免图片和iFrame等的空Src。空Src会重新加载当前页面,影响速度和效率
尽量避免写在HTML标签中写Style属性
移动端性能优化
尽量使用css3动画,开启硬件加速。

适当使用
touch 事件代替
click 事件。
避免使用
css3 渐变阴影效果。
可以用
transform: translateZ(0) 来开启硬件加速。(见下面的详细解释)

不滥用Float。Float在渲染时计算量比较大,尽量减少使用

不滥用Web字体。Web字体需要下载,解析,重绘当前页面,尽量减少使用。

合理使用requestAnimationFrame动画代替setTimeout

CSS中的属性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)会触发GPU渲染,请合理使用。过渡使用会引发手机过耗电增加

PC端的在移动端同样适用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: