当用户在搜索框输入URL后
一:浏览器通过域名查找对应的IP地址,是通过负责域名解析的DNS服务来实现的
二:浏览器向Web服务器发送一个HTTP请求
请求的方式主要分为四种:get、post、put、delete(查、改、增、删)。
get:向服务器查找某些数据,请求访问资源
post:向服务器发送应该被保存的数据
put:传输文件
delete:删除文件
head:获得报文头部(用于获取URIDE 有效性和获取资源的日期时间)
三:服务器处理请求,并返回响应,响应结果用状态码来描述。
1xx(信息性状态码)接收的请求正在处理
2xx (成功状态码)请求处理完毕200:客户端发来的请求在服务器端被正确处理了204:服务器接收的请求已被成功处理,但没有资源可以返回206:客户端进行了范围请求,服务器成功执行了这部分请求
3xx (重定向状态码)需要进行附加操作以执行请求301:永久性重定向,表示请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI302:临时重定向。表示请求的资源已经被分配了新的URI 304:表示服务器资源未改变,可直接使用客户端未过期的缓存。和重定向没有关系
4xx(客户端错误状态码)服务器无法处理请求 401:状态码发送的请求需要有HTTP认证。403:表示对请求资源的访问被服务器拒绝了。 404:服务器上无法找到请求的资源
5xx(服务器端错误状态码)服务器处理请求出错。
四:服务器返回html文件,浏览器开始解析渲染页面
浏览器解析html是自上而下的
1.浏览器载入html代码,创建DOM树
2.解析css
3.将DOM与cssOM合并,构造渲染树(render tree)
4.有了render tree,就开始布局渲染树,计算每个节点在屏幕中的位置
5.绘制渲染树
上述过程是逐步实现的,渲染引擎会尽可能早的将内容呈现在屏幕上,并不会等到所有的html解析完再去构建和布局render tree,解析完一部分就显示一部分。
关于script标签的位置:
现在一般都将script标签放在页面底部,这样能确保在脚本执行页面已经完成了DOM树的渲染
javascript的加载和执行的特点:
(1)载入后马上执行;
(2)执行时会阻塞后续的内容(包括页面渲染、其它资源的下载),因为:浏览器需要一个稳定的DOM树结构,而js中很可能有代码直接该表了DOM树的结构,浏览器为了防止出现JS修改DOM树而需要重新构建DOM树的情况,所以就会阻塞其它的下载和呈现,而是执行完js再执行之后的内容。