大沥网站建设,网站开发技能有哪些,哪有可以专门做外包项目的网站,做网站反链用户发出 URL 请求到页面开始解析的这个过程#xff0c;就叫做导航。
1. 用户输入
当用户在地址栏中输入一个查询关键字时#xff0c;地址栏会判断输入的关键字是搜索内容#xff0c;还是请求的 URL。
当用户输入关键字并键入回车之后#xff0c;这意味着当前页面即将要…用户发出 URL 请求到页面开始解析的这个过程就叫做导航。
1. 用户输入
当用户在地址栏中输入一个查询关键字时地址栏会判断输入的关键字是搜索内容还是请求的 URL。
当用户输入关键字并键入回车之后这意味着当前页面即将要被替换成新的页面不过在这个流程继续之前浏览器还给了当前页面一次执行 beforeunload 事件的机会beforeunload 事件允许页面在退出之前执行一些数据清理操作还可以询问用户是否要离开当前页面比如当前页面可能有未提交完成的表单等情况因此用户可以通过 beforeunload 事件来取消导航让浏览器不再执行任何后续工作。
2. URL 请求过程
首先网络进程会查找本地缓存是否缓存了该资源。如果有缓存资源那么直接返回资源给浏览器进程如果在缓存中没有查找到资源那么直接进入网络请求流程。这请求前的第一步是要进行 DNS 解析以获取请求域名的服务器 IP 地址。如果请求协议是 HTTPS那么还需要建立 TLS 连接。
接下来就是利用 IP 地址和服务器建立 TCP 连接。连接建立之后浏览器端会构建请求行、请求头等信息并把和该域名相关的 Cookie 等数据附加到请求头中然后向服务器发送构建的请求信息。
服务器接收到请求信息后会根据请求信息生成响应数据包括响应行、响应头和响应体等信息并发给网络进程。等网络进程接收了响应行和响应头之后就开始解析响应头的内容了。
不同 Content-Type 的后续处理流程也截然不同。如果 Content-Type 字段的值被浏览器判断为下载类型那么该请求会被提交给浏览器的下载管理器同时该 URL 请求的导航流程就此结束。但如果是 HTML那么浏览器则会继续进行导航流程。
3. 准备渲染进程
默认情况下Chrome 会为每个页面分配一个渲染进程也就是说每打开一个新页面就会配套创建一个新的渲染进程。但是也有一些例外在某些情况下浏览器会让多个页面直接运行在同一个渲染进程中。如果从一个页面打开了另一个新页面而新页面和当前页面属于同一站点的话那么新页面会复用父页面的渲染进程。官方把这个默认策略叫 process-per-site-instance。
渲染进程准备好之后还不能立即进入文档解析状态因为此时的文档数据还在网络进程中并没有提交给渲染进程所以下一步就进入了提交文档阶段。
4. 提交文档
所谓提交文档就是指浏览器进程将网络进程接收到的 HTML 数据提交给渲染进程具体流程是这样的
首先当浏览器进程接收到网络进程的响应头数据之后便向渲染进程发起“提交文档”的消息渲染进程接收到“提交文档”的消息后会和网络进程建立传输数据的“管道”等文档数据传输完成之后渲染进程会返回“确认提交”的消息给浏览器进程浏览器进程在收到“确认提交”的消息后会更新浏览器界面状态包括了安全状态、地址栏的 URL、前进后退的历史状态并更新 Web 页面。
5. 渲染阶段
一旦文档被提交渲染进程便开始页面解析和子资源加载了渲染进程会发送一个消息给浏览器进程浏览器接收到消息后会停止标签图标上的加载动画。 此文章为2月Day7学习笔记内容来源于极客时间《浏览器工作原理与实践》推荐该课程。