前端性能优化十二问

477 阅读3分钟

这篇文章的标题和问题都是我在某网站偷来的,what fuck 2021年了居然还有人出这种题目收费?本少爷只能自己一条条按照自己的理解和百度把答案补充了,答案可能答得不是那么的官方,面试也没必要按照官方回答,结合自己的理解话术是最好的。

第一章 基础理论

  • 从输入URL到渲染都经历了什么?

用户输入网址->DNS服务器解析->发起TCP三次握手建立连接->浏览器发送请求->服务器响应请求并把文件返回给客户端

浏览器渲染机制是怎么回事?

浏览器解析HTML文件得到CSS样式树和DOM树(CSS样式和DOM树会同时计算,因此正常推荐将css代码放在head里,但是当解析到script标签的时候,浏览器就会停止解析,因此为了防止解析阻塞导致页面加载慢,所以会把script标签放在最后)->将CSS样式树和DOM数整合成渲染树->通过已知的html标签和对应的样式计算布局->将计算的结果渲染到屏幕上

页面重绘和页面重排这两个步骤是很难避免的,只要涉及到dom的动态操作,都会导致页面重绘或者重排,页面重绘一般是由颜色变化导致的,而页面重排则是由于部分元素尺寸,定位变化导致的。因此对于需要操作定位或者大小的元素,尽量使其脱离文档流,防止其关联元素的定位甚至导致全局的定位重排。

  • 准确定义首屏有几个合理化方案?

1.服务器端渲染

2.预渲染

第二章 性能提升

  • web网页可以从哪些方面优化?

所以我们根据浏览器的渲染机制可以得出以下几个页面优化的方案

1.减少css样式嵌套

2.减少http请求数量

3.减少dom操作,让经常改动的几个节点脱离文档流

4.使用json格式进行数据交换,json格式是JavaScript的原生格式,因此使用的过程中不需要借助额外的工具包

5.CSS代码放在head JS代码放在最后

  • 从性能优化角度而言,有哪些需要养成的编码习惯?

CSS代码放在head JS代码放在最后

  • 静态资源优化有哪些方式?

iconfont,精灵图,将小图片转换为base64展示

  • 如何让页面渲染阶段更加顺畅?

1.避免使用通配符;

2.让css引擎快速辨别该规则是否适用于当前元素:多用id或class选择符,少用标签选择符;

3.不要画蛇添足把id和class或标签和class等连着写

4.尽量避免使用后代选择符,去除不必要的祖先元素,可以考虑使用class选择符来替换后代选择符;

  • 你真的完全理解http2和http3吗?

我他妈一个破前端 我理解那么多干嘛?

第三章内容还没学习到,等学习以后再写吧

第三章 首屏加载

如何使用service worker提升首屏?

如何提升service worker命中率?

怎么做到serverless与SSR完美结合?

加餐

如何监控上线后的性能?