最近公司开展职业技能培训,本人招录了部分内容写成博客,若有纰漏,欢迎拍砖。

http简述:

 http又称超文本传输协议,是一种无状态&无记忆协议的运用层协议,处于tcp传输层协议之上,采用请求响应模式。http请求数据格式分为请求头、消息报头、消息体;请求头中包含请求url地址和请求类型等信息;消息报头包含验证信息,编码信息,数据类型,长连接,cookie等信息;如果是post或者put请求,消息体包含请求数据

浏览器加载页面流程:

1、从域名缓存服务器中查找当前url域名对应ip,若没有找到,则向DNS服务请求解析域名请求

2、通过ip向服务器(iis 或者 )发送http请求,服务端接收到请求和相关数据后做相应处理后,向服务器响应请求,并将解析好的html存到http响应正文中

3、浏览器读取到html后依次从上到下加载并渲染,如果碰到div或者label等普通的内容标签,则直接渲染

4、如果碰到<link,<script引用资源包标签,会发起一个新http请求下载资源,下载完成并开始解析,解析过程中会停止其它资源的下载直至解析结束

5、当样式表在下载完成后,会结合已有的样式表一起解析,解析完成后,将对上下文中所有元素重新进行渲染

6、如果碰到图片或者视频语言标签,浏览器不会等图片加载完成,而是继续往后渲染,直到图片下载完后重新渲染图片这个局部区域(这就是为什么有时候页面加载完图片还未能加载)

7、每次通过js对dom进行变更操作都会重新引发渲染过程

网页加载速度优化

浏览器加载页面过程实际上就是通过http请求资源+渲染的过程,针对http协议特性以及浏览器加载页面的过程,本人总检出如下优化方案

针对数据大小

1、去除不必要的注释

2、尽量用较小的资源

3、对静态资源做压缩

4、http传输过程做压缩,Accept-Encoding: gzip

5、做cookie隔离,将静态资源放到子域名下,以免请求静态资源http-header中也带上cookie信息

针对请求数量

同一个域下浏览器能同时支持的并发数量有限,比如:某个页面包含n张图片且图片都在同一个域下,同一个时刻只能并行加载其中几张

1、合并较小资源文件

2、适当的页面缓存

3、多张小背景图片合到一张背景图片上

4、http保持长连接 Connection: Keep-Alive,以便重复利用TCP长连接(http是运行在tcp协议之上,创建http之前必须通过三次握手创建tcp连接)

5、将资源分配到不同域下以加大并发请求

针对请求模式

1、异步加载js文件,避免js解析过程导致下载过程堵塞

2、适当使用ajax局部刷新

3、处理js报错

posted on 2016-05-12 16:02  xiongweidotnet  阅读(520)  评论(0编辑  收藏  举报