zoukankan      html  css  js  c++  java
  • 前端技术基础(一):浏览器相关

    浏览器访问网站过程

    1. 用户在浏览器地址栏中输入网址
    2. 浏览器解析网址构建HTTP请求
      HTTP请求报文包括:请求行、请求头和请求体
    3. 浏览器发起DNS解析请求,将域名转化为IP地址
      网址映射到服务器IP地址,指定了访问的服务器
    4. 浏览器发送请求报文给到服务器
    5. 服务器接收并解析报文
    6. 服务器处理请求,并封装成HTTP响应报文
    7. 服务器将响应报文发送给浏览器
    8. 浏览器解析响应报文,重新渲染,在遇到新的需求时再次发送HTTP请求
    9. 最终生成页面

    浏览器渲染过程

    1. 解析HTML构建DOM树
    2. 解析CSS构建CSS规则树
    3. 从DOM树中筛选出需要渲染出的结点,剔除掉不用渲染的结点(如:、display: none的结点),构建render树
    4. 将CSS规则树与render树相结合,定位坐标和大小,确定是否换行、position、overflow、z-index等等……此过程称为reflow或layout
    5. 调用操作系统底层API进行绘图

    Firefox Gecko 引擎

    1. 解析HTML构建内容槽(Content Sink)
    2. 解析内容槽构成内容模型(Content Model),一个类似DOM树的东西
    3. 解析CSS构建CSS规则树
    4. 将CSS规则树与DOM树相结合,生成帧树(Frame Tree),一种类似render树的东西
    5. reflow
    6. 调用操作系统底层API进行绘图

    IE Trident 引擎 不开源不可知

    Reflow / Layout

    浏览器reflow或layout操作可以在Google Chrome开发者工具中点击右上角的三个点 -> More tools -> Rendering 中勾选Painting flashing,刷新网页后观看整个过程。由此可见,渲染的操作是非常复杂的,因此DOM树的操作次数务必要尽量地少,在一次重新渲染中执行多个DOM结点的更新会比频繁进行DOM结点的更新性能高出许多。

    HTTP Request & Response

    Web程序中的HTTP通讯一般分请求报文和响应报文,两种报文各有三个部分:

    1. 请求(响应)报文行
      请求行中一般包含请求方法(GET || POST)和通讯协议(HTTP / 版本号)
      响应行中一般包含HTTP状态码(200、302、404等)和通讯协议(HTTP / 版本号)
    2. 请求(响应)报文头
      请求头中一般有:主机IP及端口号、Content-Type、浏览器版本等等
      响应头中一般有:服务器类型、Content-Type、时间、Cookies等等
    3. 请求(响应)报文体
      GET方法由于内容被包含在URL中,一般没有报文体
      POST方法一般都需要有报文体
  • 相关阅读:
    CSS 使DIV居中
    jsonlib 使用 转换JSON
    jquery autocomplete 自动完成 使用
    Sql server 实用技巧总结
    MvcHtml.DropDownList()用法
    日期时间正则表达式
    ASP.NET使用log4Net日志组件教程(每天产生一个日志及日志按大小切割)
    MvcHtml.ActionLink()用法
    给学弟的bitset使用整理
    2021 CCPC 广州站
  • 原文地址:https://www.cnblogs.com/BlogOfMotherLyn/p/12307368.html
Copyright © 2011-2022 走看看