Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从 URL 输入到页面展现发生了什么

从 URL 输入到页面展现发生了什么

作者头像
小胖
发布于 2018-06-27 07:53:47
发布于 2018-06-27 07:53:47
5990
举报

总体来说分为以下几个过程:

1、DNS解析

DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例如www.baidu.com,其实不是百度网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。所以互联网设计者需要在用户的方便性与可用性方面做一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析。它实际上充当了一个翻译的角色,实现了网址到IP地址的转换。

2、TCP连接

浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

3、发送HTTP请求、服务器处理请求并返回HTTP报文

一旦TCP/IP连接建立,浏览器会通过该连接向远程服务器发送HTTP的GET请求。远程服务器找到资源并使用HTTP响应返回该资源,服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。值为200的HTTP响应状态表示一个正确的响应。

4、浏览器解析渲染页面

在收到HTML,CSS,JS文件后,浏览器通过WebKit渲染,将页面呈现到屏幕上。下图对应的就是WebKit渲染的过程。

Paste_Image.png

浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。这个过程比较复杂,涉及到两个概念: reflow(回流)和repain(重绘)。DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等,这个过程称为relow;当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容,这个过程称为repain。页面在首次加载时必然会经历reflow和repain。reflow和repain过程是非常消耗性能的,尤其是在移动设备上,它会破坏用户体验,有时会造成页面卡顿。所以我们应该尽可能少的减少reflow和repain。

Paste_Image.png

JS的解析是由浏览器中的JS解析引擎完成的。JS是单线程运行,也就是说,在同一个时间内只能做一件事,所有的任务都需要排队,前一个任务结束,后一个任务才能开始。但是又存在某些任务比较耗时,如IO读写等,所以需要一种机制可以先执行排在后面的任务,这就是:同步任务(synchronous)和异步任务(asynchronous)。JS的执行机制就可以看做是一个主线程加上一个任务队列(task queue)。同步任务就是放在主线程上执行的任务,异步任务是放在任务队列中的任务。所有的同步任务在主线程上执行,形成一个执行栈;异步任务有了运行结果就会在任务队列中放置一个事件;脚本运行时先依次运行执行栈,然后会从任务队列里提取事件,运行任务队列中的任务,这个过程是不断重复的,所以又叫做事件循环(Event loop)。

浏览器在解析过程中,如果遇到请求外部资源时,如图像,iconfont,JS等。浏览器将重复以上过程下载该资源。请求过程是异步的,并不会影响HTML文档进行加载,但是当文档加载过程中遇到JS文件,HTML文档会挂起渲染过程,不仅要等到文档中JS文件加载完毕还要等待解析执行完毕,才会继续HTML的渲染过程。原因是因为JS有可能修改DOM结构,这就意味着JS执行完成前,后续所有资源的下载是没有必要的,这就是JS阻塞后续资源下载的根本原因。CSS文件的加载不影响JS文件的加载,但是却影响JS文件的执行。JS代码执行前浏览器必须保证CSS文件已经下载并加载完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.03.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试环节:在浏览器输入 URL 回车之后发生了什么?(超详细版)
这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。
五分钟学算法
2019/09/08
6780
客户端浏览器一次http完整请求过程流程图(图文结合诠释请求过程)
相信看完这张图后大家对一次请求也有了大致的了解了,当前其中还有很多细节小编没有画出来,然后我们来看看部分过程的细节
公众号---人生代码
2020/01/14
5.6K0
客户端浏览器一次http完整请求过程流程图(图文结合诠释请求过程)
一次完整的HTTP请求过程
a)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)
WindSun
2019/09/09
9K0
一次完整的HTTP请求过程
地址栏中输入网址后发生了什么?
网址的学名叫做统一资源定位符(Uniform Resource Locator, 常缩写为URL), 我们知道现在的互联网其实就是由众多资源所构成的一张巨大的网, 如何定位那些资源就是靠的URL, 因此我们也可以把URL理解为是网络上资源的“门牌号“, 我们在浏览器中输入网址, 就相当于开一辆车(浏览器)去找一个地址(URL)
Java3y
2019/08/27
2.4K0
地址栏中输入网址后发生了什么?
从输入URL到页面展示到底发生了什么
地址:http://www.cnblogs.com/xianyulaodi/ 作者:咸鱼老弟
java思维导图
2018/07/26
2.1K0
从输入URL到页面展示到底发生了什么
BAT高频面试题:浏览器输入 URL 回车之后发生了什么?
作者在若干年前面试腾讯前端岗位的时候,有一个压轴的题目:在浏览器输入 URL 回车之后发生了什么?作者当时作为毕业两年的的切图仔,当时一脸懵逼,挂的彻底!
IT大咖说
2019/09/25
1.6K0
BAT高频面试题:浏览器输入 URL 回车之后发生了什么?
👣探索浏览器的秘密👣
浏览器内核 相信大部分的前端同学都是基于谷歌浏览器进行编码,IE的应该是极少数了吧,微软早在几年前就已经表示希望用户不要使用IE游览器尤其是旧版本的,仅仅作为兼容工具使用,因为考虑到一些旧项目需要使用,所以保留在系统内。做过IE兼容性的同学们都知道IE是多么让人头疼 🤦‍♂️,现在我们经常使用的主流内核大概这几种: Chrome浏览器内核:我们都叫chrome内核,以前是Webkit内核,现在是Blink内核 Firefox浏览器内核:Gecko内核,俗称Firefox内核 Safari浏览器内核:Web
饼干_
2022/09/19
8360
从输入url到页面展示到底发生了什么?
刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料。而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步追问下去的,很多细节就不太清楚了。
沙漠尽头的狼
2021/12/01
1.2K0
从输入url到页面展示到底发生了什么?
从URL输入到页面展现到底发生什么?
URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。
loveX001
2022/09/30
6320
面试题之从敲入 URL 到浏览器渲染完成
小汪最近在看【WebKit 技术内幕】一书,说实话,这本书写的太官方了,不通俗易懂。
夜尽天明
2019/11/13
7880
面试题之从敲入 URL 到浏览器渲染完成
一个页面从输入URL到加载显示完成,发生了什么?
面试经典题——URL加载 一、涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns、http):DNS解析成IP并完成http请求发送; 传输层(tcp、udp):三次握手四次挥手模式建立tcp连接; 网络层(IP、ARP):IP寻址; 数据链路层(PPP):将请求数据封装成帧; 物理层:利用物理介质传输比特流(传输的时候通过双绞线、电磁波等) OIS七层框架:多了两层即,会话层(处理两个通信系统中交换信息的表示方式)和表示层(管理不同用户和进程之间的对话)。 get和post的
keyWords
2018/09/19
1.7K0
拼多多面试 从输入URL到页面加载完成发生了什么?
从输入URL到页面加载完成,发生了一系列复杂的步骤,涉及到浏览器、DNS服务器、Web服务器等多个组件的协同工作。下面是详细的过程:
codewd
2024/07/24
1410
拼多多面试 从输入URL到页面加载完成发生了什么?
用户输入网址到页面返回都发生了什么?(全面分析)
浏览器做的第一步就是会解析URL得到里面的参数,分析域名是否规范,并将域名和需要的请求的资源分离开来,从而了解需要请求的是哪个服务器,请求的是服务器上的什么资源等等
can4hou6joeng4
2023/11/29
2370
面试官:从 URL 输入到页面展现到底发生了什么?
当然故事其实并不是从输入一个URL或抓着鼠标点击一个链接开始的,事情的开端要追溯到服务器启动监听服务的时候,在某个未知的时刻,一台机房里普普通通的服务器,加上电,启动了操作系统,随着操作系统的就绪,服务器启动了 http 服务进程,这个 http 服务的守护进程(daemon),可能是 Apache、Nginx、IIS、Lighttpd中的一个,不管怎么说,这个 http 服务进程开始定位到服务器上的 www 文件夹(网站根目录),一般是位于 /var/www ,然后启动了一些附属的模块,例如 php,或者,使用 fastcgi 方式连接到 php 的 fpm 管理进程,然后,向操作系统申请了一个 tcp 连接,然后绑定在了 80 端口,调用了 accept 函数,开始了默默的监听,监听着可能来自位于地球任何一个地方的请求,随时准备做出响应。
南风
2019/06/11
1.1K0
面试官:从 URL 输入到页面展现到底发生了什么?
从输入url到页面加载完成发生了什么详解
这是一道经典的面试题,这道题没有一个标准的答案,它涉及很多的知识点,面试官会通过这道题了解你对哪一方面的知识比较擅长,然后继续追问看看你的掌握程度。当然我写的这些也只是我的一些简单的理解,从前端的角度出发,我觉得首先回答必须包括几个基本的点,然后在根据你的理解深入回答。
IT人一直在路上
2019/09/18
1.6K0
从输入url到页面加载完成发生了什么详解
化繁为简,简括浏览器渲染机制
我们都知道,JS是单线程的,也就是只有前一个任务执行完成,才会执行下一个任务。如果前一个任务耗时很长,那么下一个任务就只能干等着。显然,这样是非常浪费资源的。那么就要解决这个问题啦,先来了解一下「Event Loop」事件循环。
JowayYoung
2020/11/09
8640
用户输入网址到页面返回都发生了什么?
浏览器做的第一步就是会解析URL得到里面的参数,分析域名是否规范,并将域名和需要的请求的资源分离开来,从而了解需要请求的是哪个服务器,请求的是服务器上的什么资源等等
不叫猫先生
2023/11/04
2960
用户输入网址到页面返回都发生了什么?
从输入URL到页面加载发生了什么
问题:在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么。仔细思考这个问题,发现确实很深,这个过程涉及到的东西很多。
Java后端技术
2018/08/09
1.4K0
从输入URL到页面加载发生了什么
通过浏览器访问一个站点,其中经历了哪些过程
当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了。
小狐狸说事
2022/11/17
2.5K0
通过浏览器访问一个站点,其中经历了哪些过程
从URL输入到页面展现到底发生什么?
URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。
loveX001
2022/10/13
6090
推荐阅读
相关推荐
面试环节:在浏览器输入 URL 回车之后发生了什么?(超详细版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档