美文网首页
url解析流程

url解析流程

作者: 牛牛_735d | 来源:发表于2019-11-13 15:47 被阅读0次
    • 浏览器进程主要负责用户交互、子进程管理和文件存储等功能

    • 网络进程是面向渲染进程和浏览器进程等提供网络下载功能

    • 渲染进程主要职责是把从网络下载的HTML、JS、CSS图片等资源解析为可显示赫尔交互的页面

    请求解析流程

    大致可以描述为:
    1. 首先从浏览器进程输入请求URL
    2. 网络进程发起URL请求
    3. 服务器响应URL请求之后、浏览器进程开始准备渲染进程
    4. 渲染进程准备好之后、向渲染进程提交网络进程响应的数据、称为提交文档阶段
    5. 渲染进程接收完整文档信息之后、开始解析加载页面及子资源、完成页面渲染
    
    
    1. 用户输入
       用户在地址栏输入查询关键字时、地址栏会判断输入的是关键字还是请求的URL
       若是搜索内容、地址栏会使用浏览器默认的搜索引擎、合成包含搜索关键字的URL
       若输入内容符合URL规则、则解析为URL、浏览器加载一个地址之后、导航栏图表就进入了加载状态、页面没变、需要等待提交文档阶段、页面内容才会替换
    2. URL请求过程
       浏览器进程通过进程间通信IPC把url请求发送到网络进程、网络进程接收到URL请求后才发起请求
       
       1) 网络进程先查找本地缓存是否缓存了改资源、若有直接返回
       2) 没有、进入网络请求流程(DNS解析->ip、若https协议先建立TLS连接)
       3) 利用IP地址和服务器建立TCP连接、建立连接后浏览器会构造请求信息(请求行/头)把相关cookie加入请求头、发送请求信息
       4) 服务器收到请求后、生产响应数据(响应行/头/体)、发给网络进程、网络进程接收到响应行和响应头之后解析响应头
          a. 重定向 - 响应码 301|302 从响应头提取Location、然后发起新的请求、从新开始
          b. 响应数据类型处理
             Content-Type标记浏览器响应类型 text/html 代表返回数据是HTML格式、继续后续流程
             application/octet-stream 返回数据是字节流类型、按照下载类型来处理、请求提交给浏览器的下载管理器
    3. 准备渲染进程
       默认情况下、Chrome会为每个页面分配一个渲染进程、但某些情况下会多个页面运行在同一渲染进程中
       通常: 
       打开新的页面会使用单独的渲染进程、
       若从A页面打开B页面、且AB属于同一站点、则B复用A页面的渲染进程、若是其它情况、会单独创建进程
       
       渲染进程准备好之后、不能立即进入文档解析阶段、因为此时文档还在网络进程中、并未提交给渲染进程、所以下一步是进入提交文档阶段
       
    4. 提交文档
       提交文档(响应数据)的请求是浏览器进程发出的、渲染进程接收到消息后、会和网络进程建立传输数据的通道
       文档数据传输完成后、渲染进程返回 确认提交 的消息给浏览器进程
       浏览器进程在收到确认提交的消息后、更新浏览器界面状态、包含了安全状态、地址栏的url、前进后退的历史状态、并更新web界面
       
       一个完整的导航走完了、进入渲染阶段
       
    5. 渲染阶段
       文档一旦被提交、渲染进程就开始页面解析和子资源加载了、一旦页面生成、渲染进程会给浏览器进程发送消息、浏览器进程收到消息停止标签页上的加载动画
       
    
    浏览器加载页面.png

    相关文章

      网友评论

          本文标题:url解析流程

          本文链接:https://www.haomeiwen.com/subject/kbzhictx.html