这篇文章的标题和问题都是我在某网站偷来的,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吗?
我他妈一个破前端 我理解那么多干嘛?
第三章内容还没学习到,等学习以后再写吧
第三章 首屏加载
加餐