三个方面来看的前端性能优化

目录

一、优化

    1)减少资源请求数量和大小

    2)代码优化相关

    3)存储相关

二、页面从输入 URL 到页面加载显示完成过程解析

三、反思平时怎么来管理项目?

一、优化

1)减少资源请求数量和大小

1. 文件合并, 公共库合并、不同页面单独合并。

(原因:文件多会增加网络延迟或是丢包,也可能使代理服务器被断开)

2. 处理图片

  使用雪碧图或者说精灵图;

  将图片的内容以Base64格式内嵌到HTML中,可以减少HTTP请求数量;

  使用字体图标来代替图片(因为字体图标或者SVG是矢量图,代码编写出来的,方大不会变形,而且渲染速度快)。

3. 减少重定向,当页面发生了重定向,就会延迟整个HTML文档的传输。

  (如果一定要使用重定向,如http重定向到https,要使用301永久重定向,而不是302临时重定     向。因为,如果使用302,则每一次访问http,都会被重定向到https的页面。而永久重定向,在第一次从http重定向到https之后 ,每次访问http,会直接返回https的页面)

4. 使用缓存 使用cach-control或expires这类强缓存,缓存不过期情况下不向服务器发送请求。

  (强缓存过期时,会使用last-modified或etag这类协商缓存,向服务器发送请求,如果资源没有变化,则服务器返回304响应,浏览器继续从本地缓存加载资源;如果资源更新了,则服务器将更新后的资源发送到浏览器,并返回200响应)

5. 避免使用空的src和href

 a标签设置空的href,会重定向到当前的页面地址

 form设置空的method,会提交表单到当前的页面地址

6. 图片的懒加载,树的懒加载(延迟加载)
 目的为了减少页面第一次加载过程中http的请求次数

7. 能用css做的效果,不要用js做,能用原生js做的,不要轻易去使用第三方插件。
 避免引入第三方大量的库。而自己却只是用里面的一个小功能

8. 压缩资源

 HTML、CSS压缩、JS压缩与混乱、图片压缩

9. 减少对cookie的使用(最主要的就是减少本地cookie存储内容的大小)

    因为客户端操作cookie的时候,这些信息总是在客户端和服务端传递。如果上设置不当,每次发送一个请求将会携带cookie

10. 避免使用iframe
 不仅不好管控样式,而且相当于在本页面又嵌套其他页面,消耗性能会更大。因为还回去加载这个嵌套页面的资源

2)代码优化相关

1. 在js中尽量减少闭包的使用
  原因:使用闭包后,闭包所在的上下文不会被释放

2. 减少对DOM操作,主要是减少DOM的重绘与回流

3. 在js中避免嵌套循环和"死循环"(一旦遇到死循环,浏览器就会直接卡掉)

4. 把css放在body上,把js放在body下面
  让其先加载css(注意:这里关于优化没有多大关系)

5. 减少css表达式的使用,例如cacl(但是很好用)

6. css选择器解析规则所示从右往左解析的。减少元素标签作为对后一个选择对象

7. 尽量将一个动画元素单独设置为一个图层(避免重绘或者回流的大小)

8. css中设置定位后,最好使用z-index改变盒子的层级,让盒子不在相同的平面上

9. css导入的时候尽量减少@import导入式,因为@import是同步操作,只有把对应的样式导入后,才会继续向下加兹安,而link是异步的操作

10. 使用window.requestAnimationFrame(js的帧动画)代替传统的定时器动画
 如果想使用每隔一段时间执行动画,应该避免使用setInterval,尽量使用setTimeout代替setInterval定时器。因为setInterval定时器存在弊端:可能造成两个动画间隔时间缩短

11. 基于script标签下载js文件时,可以使用defer或者async来异步加载

12. 在事件绑定中,尽可能使用事件委托,减少循环给DOM元素绑定事件处理函数。

13. 减少Flash的使用

3)存储相关

1. 结合后端,利用浏览器的缓存技术,做一些缓存(让后端返回304,告诉浏览器去本地拉取数据)。(注意:也有弊端)可以让一些不太会改变的静态资源做缓存。比如:一些图片,js,cs

2. 利用h5的新特性(localStorage、sessionStorage)做一些简单数据的存储,避免向后台请求数据或者说在离线状态下做一些数据展示。

二、页面从输入 URL 到页面加载显示完成过程解析

1. 浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;

2. 服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);

3. 浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);

4. 载入解析到的资源文件,渲染页面,完成。

三、反思平时怎么来管理项目?

1. 先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等;

2. 编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);

3. 标注样式编写人,各模块都及时标注(标注关键样式调用的地方);

4. 页面进行标注(例如 页面 模块 开始和结束);

5.CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);

6. JS分文件夹存放 命名以该JS功能为准的英文翻译。

7. 图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理



资料整理参考:

前端性能优化汇总 - 会飞的猪~~ - 博客园

前端性能优化的七大手段 - 小火柴的蓝色理想 - 博客园

前端工程师面试题(性能优化) - 简书
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值