面试题:性能优化有哪些方式?

111 阅读2分钟

前端可以做的性能优化,主要分为以下几个方面:

  1. 网络优化
  2. 页面渲染优化
  3. Js优化
  4. 图片优化
  5. webPack打包优化
  6. Vue优化
一.网络优化
1)DNS预解析

<link rel="dns-prefetch" href="https://cdn.bootcss.com"> 通过link标签的dns-prefetch属性,提前获取域名对应的IP地址来减少DNS域名解析的时间。 010 减.....3轻服务端压力,快速得到数据(打算单独写一篇文章学习)

3)压缩响应

通过减少HTTP请求产生的响应包的大小,从而减少响应的时间。Web客户端可以通过HTTP请求中的Accept-Encodeing头来标识对于压缩的支持。

Web浏览器看到这个请求头,会使用客户端的一系列方法中的一种进行压缩,web服务器通过响应中的Content-Encoding头来告知Web服务端通过哪种方法进行压缩。

通常会压缩的是HTML文档,脚本和样式表;但是图片和PDF文件不应该被压缩。

image.png

image.png

4)使用多个域名

浏览器会有同域名限制并发下载数的情况,使用不同的域名可以最大化下载线程,但应保持在2-4个域名内,以免DNS查询损耗。

5)避免图片的src为空

就算src为空,浏览器仍会发起一个HTTP请求;

二、页面渲染优化

image.png

1)避免css阻塞

应当尽早将css放在head标签里,和尽快启用CDN实现静态资源加载速度的优化。

2)降低css选择器的复杂度(减少嵌套、利用继承)。
3)避免使用css表达式(css表达式会被频繁计算)。
4)避免js阻塞

js可以修改CSSOM和DOM,因此js会阻塞页面的解析和渲染,并且会等待css资源的加载,所以需要给js资源加上defer或async,延迟js脚本的执行。

5)使用外链式的js和css

因为js和css如果在外部文件中,浏览器可以缓存它们,html文档的大小会被减小而不必增加HTTP请求数量,会产生比较快的页面。

6)使用字体图标代替图片图标
7)首屏加载优化

资源按需加载,不需要的资源延迟加载

8)减少重绘和回流

用translate 代替 top;用visibility替换dispaly:none;用opacity代替visibily; 尽量少用table布局,尽量减少频繁的去操作dom;

三、JS中的性能优化

使用委托事件

防抖和节流

尽量不要使用js动画

使用computed对计算结果进行缓存

四、图片的优化

图片懒加载,

使用css效果替代图片,

图片压缩,

图片注意格式,大图片用webp,小图片用png.

五、vue优化

image.png