一、URL到页面

**准备阶段: **

输入URL,Enter进入查找

浏览器在本地查找host文件,匹配对应的IP; 找到返回浏览器并缓存

没有,则进入路由查找; 找到返回浏览器并缓存

再没有,再进入公网DNS根目录 ; 找到返回浏览器并缓存

进入,等待发送请求,建立tcp/ip 传输连接, 若没有等候的请求,则直接发送

**服务器阶段: **

根据请求,查找数据,返回数据

渲染阶段:

逐行解析HTML, 遇到同步的请求代码,则发送数据请求,cssLink, js, 图片,视频等;

构建htmlDOM-tree, CSSDOM ,

render-tree

2、html页面渲染:

  1. 发送请求,服务器返回HTML,浏览器解析HTML,发出相应css的和js请求

    • html 不是缓存的
  2. css下载完成,构建dom树,构建cssDOM完成后,结合DOM生成Rendering Tree,
    • css是由单独的下载线程异步下载的
    • css加载不会阻塞DOM树的解析
    • css加载会阻塞DOM树的渲染
    • css加载会阻塞后面js语句的执行
  3. js下载完成,操作DOM,更新DOM;在html解析过程中或是DOM和CSSDOM结构构建中,同步请求加载JS,解析js都会阻塞浏览器的构和渲染
    • 解析到js会, js引擎会使html解析线程暂停,html页面停止解析
    • js请求加载完毕, js执行完毕, js引擎停止, html线程继续工作解析

3、异步请求,页面更新

重排, 重绘

4、web浏览器引擎

  1. 浏览器内核(浏览器渲染引擎):

浏览器内核可以分为这四种:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)

  1. 浏览器js引擎

5、浏览器本地存储

indexDB, storage,cookie

6、浏览器缓存

解析url, 查找缓存,发送请求

6.1、解析url,验证是否有缓存标识信息

  1. 有,进一步验证是否过期
  2. 未过期,则返回缓存的资源

6.2 查找缓存:

  • Service Worker (浏览器独立线程)
  • Memory Cache (内存中)
  • Disk Cache (磁盘)
  • Push Cache (推送缓存,session)

7、浏览器的事件轮询

  1. 同步任务,解析执行语句
  2. 同步执行栈空, 去轮询异步队列
  3. 检查微任务
  4. 检查宏任务
  5. 一般性异步任务
定时器: 解析时,是现在浏览器中开辟一个独立计时环境, 在设定时间结束后,再自行加入异步轮询队列,所以定时器的回调函数执行顺序,主要与设定时间,和轮询队列决定;

8、TTFB:

TTFB是“最初的网络请求被发起”到“从服务器接收到第一个字节前”所花费的毫秒数。

9、timechart: (以可并行)

blocked: 预处理: 缓存查询, 网络阻塞

DNS lookup: 域名IP查询 (浏览器生命周期内只查询解析一次)

connect: TCP建立连接的时间

send: 请求开始,到发送完的时间

wait: 接收服务器响应的第一个字节的时间,可以代表服务器的处理的时间

Receive:从接收第一个字节的时间, 接收完成

TTFB:是“最初的网络请求被发起”到“从服务器接收到第一个字节前”所花费的毫秒数;即: DNS lookup~wait

network: 更网络相关的时间,TTFB+Rececive

**优化建议: **

https: 减少重定向

https: 减少请求,就会对上面的阶段减少,也会减少浏览器重绘重排;提升用户体验

图片合并: 减少服务器查找时间,IO时间

10、新版 Timing 表

Queued: 请求解析到的事件

Startlled : 开始进入线程的时间

Resource Scheduling 资源拍排程

Queueing: 排程中的时间

Connection Start

Stalled: 预处理时间

DNS Lookup: 域名映射IP时间

initial connection: 初始化连接时间

SSL: 安全套接字时间

Request sent 请求发送时间

Waiting(TTFB): 服务器查询时间

Content Download: 资源下载时间

11、浏览器5个常驻线程:

​ js引擎分配的线程

​ GUI渲染页面的线程

​ 浏览器事件线程

​ 浏览器定时器触发线程

​ 浏览器http请求线程

​ 其他插件线程

web前端之浏览器: 知识汇总的更多相关文章

  1. web前端project师知识汇总

    分类: Web开发应用  一.何为Web前端project师?           前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...

  2. Web前端必备-Nginx知识汇总

    一.Nginx简介 Nginx是一个高性能.轻量级的Web和反向代理服务器, 其特点是占有内存及资源少.抗并发能力强. Nginx安装简单.配置简洁.启动快速便捷.支持热部署.支持 SSL.拥有高度模 ...

  3. 、web前端的这么知识应该是怎样的一个知识体系架构?

    .web前端的这么知识应该是怎样的一个知识体系架构?之前我以为可以以W3C为纲要,把W3C的东西学会了就够了.后来发现我错了,W3C还不全面. 真正全面的覆盖了web前端知识体系的东西是——浏览器内核 ...

  4. Web前端工程师-优秀简历汇总

    Web前端工程师-优秀简历汇总   1. http://www.linqing07.com/resume.html   2.  http://www.flqin.com/#page2   3.  ht ...

  5. web前端开发浏览器兼容性 - 持续更新

    浏览器兼容性问题又被称为网页或网站兼容性问题:不同浏览器内核及所支持的html等网页语言标准不同,不同客户端环境(如分辨率不同)造成实际显示效果未能达到预期理想效果 首先我们来看一下目前市面上常见的一 ...

  6. Web 前端面试小知识

    简历投递 前期为了解自身短板, 可以海投一些试试. 不建议长期海投简历, 对用人单位简历筛选和你自身都没什么好处. 投简历之前最起码要关注以下几点(薪资范围, 公司位置, 职位要求, 是否为培训机构冒 ...

  7. Web前端之基础知识

    学习web前端开发基础技术须要掌握:HTML.CSS.Javascript 1.HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息,能够包括文字.图片.视频等. 2.CSS样式 ...

  8. 初学者入门web前端 C#基础知识:数组与集合

    对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...

  9. web前端 关于浏览器兼容的一些知识和问题解决

    浏览器兼容 为什么产生浏览器兼容,浏览器兼容问题什么是浏览器兼容: 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况. 浏览器兼容产生的原因: 因为不 ...

随机推荐

  1. HDU 6634 网络流最小割模型 启发式合并

    如果我们先手拿完所有苹果再去考虑花费的话. S -> 摄像头 -> 苹果 -> T 就相当于找到一个最小割使得S和T分开. ans = sum - flow. 然后对于这一个模型, ...

  2. CF - 1108 F MST Unification

    题目传送门 题意:在一幅图中, 问需要使得多少条边加一,使得最小生成树只有一种方案. 题解:Kruskal, sort完之后,对于相通的一个边权w,我们可以分析出来有多少边是可以被放到图里面的,然后我 ...

  3. CodeForces 780 E Underground Lab

    Underground Lab 题解: 如果遍历一棵树,我们可以发现最多需要走的步数也不会超过2 * n步. 所以我们选出一棵树,然后遍历一边这颗树. 然后把序列分成k块就好了. 代码: #inclu ...

  4. codeforces 793 D. Presents in Bankopolis(记忆化搜索)

    题目链接:http://codeforces.com/contest/793/problem/D 题意:给出n个点m条边选择k个点,要求k个点是联通的而且不成环,而且选的边不能包含选过的边不能包含以前 ...

  5. Ubuntu开机出现grub指令,无法正常开机

    问题 最近开机出现了如下的界面: 分析问题 首先看看GNU GRUB是什么东东?干什么用的? GNU GRUB是多重引导加载程序.通俗点说,它就是用来一个可以让你选择运行什么操作系统的程序. 在你开机 ...

  6. Kafka源码分析及图解原理之Producer端

    一.前言 任何消息队列都是万变不离其宗都是3部分,消息生产者(Producer).消息消费者(Consumer)和服务载体(在Kafka中用Broker指代).那么本篇主要讲解Producer端,会有 ...

  7. 【LeetCode】33-搜索旋转排序数组

    题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这 ...

  8. mysql之innodb存储引擎介绍

    一.Innodb体系架构 1.1.后台线程 后台任务主要负责刷新内存中的数据,保证缓冲池的数据是最近的数据,此外还将修改的数据刷新到文件磁盘,保证在数据库发生异常的情况下Innodb能恢复到正常的运行 ...

  9. vsnprint参数和意义

    _vsnprintf(char *str, size_t size, const char *format, va_list ap) char *str [out],把生成的格式化的字符串存放在这里. ...

  10. .Net基础篇_学习笔记_第七天_随机数的产生

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...