web前端之浏览器: 知识汇总
一、URL到页面
**准备阶段: **
输入URL,Enter进入查找
浏览器在本地查找host文件,匹配对应的IP; 找到返回浏览器并缓存
没有,则进入路由查找; 找到返回浏览器并缓存
再没有,再进入公网DNS根目录 ; 找到返回浏览器并缓存
进入,等待发送请求,建立tcp/ip 传输连接, 若没有等候的请求,则直接发送
**服务器阶段: **
根据请求,查找数据,返回数据
渲染阶段:
逐行解析HTML, 遇到同步的请求代码,则发送数据请求,cssLink, js, 图片,视频等;
构建htmlDOM-tree, CSSDOM ,
render-tree
2、html页面渲染:
- 发送请求,服务器返回HTML,浏览器解析HTML,发出相应css的和js请求
- html 不是缓存的
- css下载完成,构建dom树,构建cssDOM完成后,结合DOM生成Rendering Tree,
- css是由单独的下载线程异步下载的
- css加载不会阻塞DOM树的解析
- css加载会阻塞DOM树的渲染
- css加载会阻塞后面js语句的执行
- js下载完成,操作DOM,更新DOM;在html解析过程中或是DOM和CSSDOM结构构建中,同步请求加载JS,解析js都会阻塞浏览器的构和渲染
- 解析到js会, js引擎会使html解析线程暂停,html页面停止解析
- js请求加载完毕, js执行完毕, js引擎停止, html线程继续工作解析
3、异步请求,页面更新
重排, 重绘
4、web浏览器引擎
- 浏览器内核(浏览器渲染引擎):
浏览器内核可以分为这四种:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)
- 浏览器js引擎
5、浏览器本地存储
indexDB, storage,cookie
6、浏览器缓存
解析url, 查找缓存,发送请求
6.1、解析url,验证是否有缓存标识信息
- 有,进一步验证是否过期
- 未过期,则返回缓存的资源
6.2 查找缓存:
- Service Worker (浏览器独立线程)
- Memory Cache (内存中)
- Disk Cache (磁盘)
- Push Cache (推送缓存,session)
7、浏览器的事件轮询
- 同步任务,解析执行语句
- 同步执行栈空, 去轮询异步队列
- 检查微任务
- 检查宏任务
- 一般性异步任务
定时器: 解析时,是现在浏览器中开辟一个独立计时环境, 在设定时间结束后,再自行加入异步轮询队列,所以定时器的回调函数执行顺序,主要与设定时间,和轮询队列决定;
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前端之浏览器: 知识汇总的更多相关文章
- web前端project师知识汇总
分类: Web开发应用 一.何为Web前端project师? 前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...
- Web前端必备-Nginx知识汇总
一.Nginx简介 Nginx是一个高性能.轻量级的Web和反向代理服务器, 其特点是占有内存及资源少.抗并发能力强. Nginx安装简单.配置简洁.启动快速便捷.支持热部署.支持 SSL.拥有高度模 ...
- 、web前端的这么知识应该是怎样的一个知识体系架构?
.web前端的这么知识应该是怎样的一个知识体系架构?之前我以为可以以W3C为纲要,把W3C的东西学会了就够了.后来发现我错了,W3C还不全面. 真正全面的覆盖了web前端知识体系的东西是——浏览器内核 ...
- Web前端工程师-优秀简历汇总
Web前端工程师-优秀简历汇总 1. http://www.linqing07.com/resume.html 2. http://www.flqin.com/#page2 3. ht ...
- web前端开发浏览器兼容性 - 持续更新
浏览器兼容性问题又被称为网页或网站兼容性问题:不同浏览器内核及所支持的html等网页语言标准不同,不同客户端环境(如分辨率不同)造成实际显示效果未能达到预期理想效果 首先我们来看一下目前市面上常见的一 ...
- Web 前端面试小知识
简历投递 前期为了解自身短板, 可以海投一些试试. 不建议长期海投简历, 对用人单位简历筛选和你自身都没什么好处. 投简历之前最起码要关注以下几点(薪资范围, 公司位置, 职位要求, 是否为培训机构冒 ...
- Web前端之基础知识
学习web前端开发基础技术须要掌握:HTML.CSS.Javascript 1.HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息,能够包括文字.图片.视频等. 2.CSS样式 ...
- 初学者入门web前端 C#基础知识:数组与集合
对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...
- web前端 关于浏览器兼容的一些知识和问题解决
浏览器兼容 为什么产生浏览器兼容,浏览器兼容问题什么是浏览器兼容: 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况. 浏览器兼容产生的原因: 因为不 ...
随机推荐
- 牛客网暑期ACM多校训练营(第三场) C Shuffle Cards 平衡树 rope的运用
链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 Eddy likes to play cards game since there are al ...
- HTML连载35-背景图片的练习、精灵图
一.背景图片练习 解释:这个例子需要注意的是,我们背景图片嵌套到另一个图片之中.我们设计的注意点在于,怎么定位到我们想定位到的地方. 总结:背景图片就是一块一块的,我们想把块的位置定位好(一般就是宽和 ...
- 从SpringBoot构建十万博文聊聊Tomcat集群监控
前言 在十万博文终极架构中,我们使用了Tomcat集群,但这并不能保证系统不会出问题,为了保证系统的稳定运行,我们还需要对 Tomcat 进行有效的运维监控手段,不至于问题出现或者许久一段时间才知道. ...
- HDFS 读写流程-译
HDFS 文件读取流程 Client 端调用 DistributedFileSystem 对象的 open() 方法. 由 DistributedFileSystem 通过 RPC 向 NameNod ...
- android 拍照 相册 剪切以及显示功能
一.概述 android的 图片拍照 ,相册选图,以及图片剪切功能可以说非常常用. 尤其是图片上传功能,必然用到此功能. 而公司最近的一个项目中正好用到该功能. 记录下来以便以后再次用到,直接拿来使用 ...
- Spinner列表选择框
Spinner首先它是一个弹出式的列表选择框,由于间接继承了ViewGroup,所以它可以当做一个容器使用; 如果我们可以明确下拉列表中的列表项, 则可以不需要编写代码, 只需要为spinner指定a ...
- spring aop 之链式调用
关关雎鸠,在河之洲.窈窕淑女,君子好逑. 概述 AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横 ...
- 【学习笔记】第三章 python3核心技术与实践--Jupyter Notebook
可能你已经知道,Python 在 14 年后的“崛起”,得益于机器学习和数学统计应用的兴起.那为什么 Python 如此适合数学统计和机器学习呢?作为“老司机”的我可以肯定地告诉你,Jupyter N ...
- JDBC连接时出现的问题总结
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- .Net轻量状态机Stateless
很多业务系统开发中,不可避免的会出现状态变化,通常采用的情形可能是使用工作流去完成,但是对于简单场景下,用工作流有点大财小用感觉,比如订单业务中,订单状态的变更,涉及到的状态量不是很多,即使通过简单的 ...