浏览器加载过程,并写出相应办法解决加载缓慢的问题

91 阅读2分钟

关键答案内容,主要考察考生是否有性能调优的想法及经验,写对几条即可:

一、浏览器加载过程:

1、建立连接过程

(1)、浏览器查找域名的IP地址

(2)、浏览器给web服务器发送一个HTTP请求

(3)、服务器发送永久重定向响应

(4)、浏览器跟踪重定向地址

(5)、服务器“处理”请求

(6)、服务器发回一个HTML响应

2、浏览器渲染

解析HTML

构建DOM树

渲染树构建

渲染树布局

绘制渲染树

二、优化方法

(1)、启用浏览器缓存

(2)、页面内容组织

① 为 HTML 文档指定字符集,可让浏览器立即开始执行脚本。

② 将内嵌样式块和  元素从文档主体移至文档标题,可改善显示性能。

③ 将小型样式表或者脚本内嵌到主 HTML 网页中,可减少在下载其他资源时的往返时间 (RTT) 和延迟时间。

④ 正确地排列外部样式表与外部和内嵌脚本的顺序,可增加下载时同时加载的数据量,并提高浏览器显示网页的速度。为确保能够并行下载这CSS 文件,始终将外部 CSS 文件排在外部 JavaScript 文件前面。

3、HTML

① 使用HTML5新标签,例如header、footer、section、nav、article。因为它们语义化,速度快,结构合理,浏览器上识别能力强。

② 减少HTML标签嵌套深度,嵌套越深,在移动端的Web页面渲染速度以及滚动流畅度都会有所减低。

③ 为图片指定大小,减少重排。

④ 压缩HTML。

4、 CSS

① 使用CssSprite将零星的背景图包含到一张图中,通过background-position来使它显示在正确的位置;只请求一张图,减少了HTTP请求的次数。

② 模块化、精简css,提高复用率。

③ 减少渐变、阴影的使用。

④ 合理使用CSS3高性能动画,Translate3d支持硬件加速。

⑤ 避免使用滤镜。

⑥ 不使用@import。

⑦ 合并和压缩CSS代码。

5、JavaScript

① 暂缓 JavaScript 解析,暂缓解析不需要的 JavaScript(等到需要执行时再进行解析),可以提高网页的初始加载速度。

② 使用事件委托机制,避免频繁操作DOM节点。

③ 模块化代码:SeaJs。

④ 合并和压缩JavaScript代码。

6、 图片优化

① 图片时页面大部分加载时间所花的地方,在图片设计的时候应该考虑相应的图片大小和格式

② 压缩图片