一般会经历以下几个过程:

1、首先,在浏览器地址栏中输入url

2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。

3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。

5、握手成功后,浏览器向服务器发送http请求,请求数据包。

6、服务器处理收到的请求,将数据返回至浏览器

7、浏览器收到HTTP响应

8、读取页面内容,浏览器渲染,解析html源码

9、生成Dom树、解析css样式、js交互

10、客户端和服务器交互

11、ajax查询

其中,步骤2的具体过程是:

  • 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
  • 操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
  • 路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
  • ISP缓存:若上述均失败,继续向ISP搜索。

一个页面从输入URL到页面加载显示完成,这个过程都发生什么?相关推荐

  1. 爱创课堂每日一题第五十七天-一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?...

    分为4个步骤: (1),当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询.这 ...

  2. 页面从输入 URL 到页面加载显示完成

    这题胜在区分度高,知识点覆盖广,再不懂的人,也能答出几句, 而高手可以根据自己擅长的领域自由发挥,从URL规范.HTTP协议.DNS.CDN.数据库查询. 到浏览器流式解析.CSS规则构建.layou ...

  3. 前端经典面试题:在浏览器从输入 URL 到页面加载显示完成的过程?从输入URL到页面加载发生了什么?

    总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 正文之前:(可以跳过) 在讨论点击URL后会发生什么之前,我们必须 ...

  4. Android 四大组件之——Acitivity(四) Activity是如何加载显示内容的?

    1. 在Activity调用onCreate()等生命周期之前,Activity会调用attach()方法,而在attach()方法中会调用如下代码 onAttach() {PolicyManager ...

  5. 一个页面从输入URL到加载显示完成,发生了什么?

    面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...

  6. 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3

    备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...

  7. 从输入 URL 到页面加载完的过程中都发生了什么事情 —— 网络优化篇

     转自从输入 URL 到页面加载完的过程中都发生了什么事情 -- 网络优化篇 想到这不就是我这两年来研究的东西么,于是就接受一下挑战.网上已经有很多版本的答案了.这道题可以从浏览器端,网络传输和服 ...

  8. 前端学习之浏览器从输入URL到页面加载的全过程

    浏览器从输入URL到页面加载的全过程 从输入URL到页面加载的主干流程如下: 1.浏览器的地址栏输入URL并按下回车. 2.浏览器查找当前URL的DNS缓存记录. 3.DNS解析URL对应的IP. 4 ...

  9. 从输入url到页面加载完成中间都发生了什么?

    从输入 URL 到页面加载完成的过程中都发生了什么事情? nwind | 24 May 2014 背景 本文来自于之前我发的一篇微博: 不过写这篇文章并不是为了帮大家准备面试,而是想借这道题来介绍计算 ...

最新文章

  1. 犯错是成为技术专家的必要条件
  2. VS插件开发——格式化变量定义语句块
  3. Video在网页和移动端无法自动播放问题??
  4. python2 字符串函数_笔记六:python2字符串运算与函数
  5. 使用Flash,HTML5和Unity开发网页游戏的对比
  6. ViewBinding使用时出现Missing required view with ID: xxx 错误
  7. 关于类名前两个字大写,Spring引入不成功的问题。
  8. 静态方法能被重写么?
  9. 子域名接管_在S3上利用子域接管
  10. 技术总监的“技术提升”
  11. Qt编译出错:During startup program exited with code 0xc0000135
  12. missing ‘;‘ before ‘int‘ C语言
  13. 台式机耳机或音响使用
  14. 事务第02讲:数据库事务(MySQL)
  15. flex布局: justify-content
  16. Lustre 监控, Grafana Dashboard
  17. 三参数或七参数计算工具使用帮助
  18. nunit常用属性_通过在测试中使用nunit属性来帮助您的同事节省时间
  19. Python正则re模块学习笔记
  20. JavaScript | 益智类数字棋牌小游戏,无游戏框架,浏览器直接运行JavaScript(js)小游戏【源码+解析】

热门文章

  1. ASE40N50SH-ASEMI高压MOS管ASE40N50SH
  2. 西柏办公用品管理系统(含源代码)
  3. “文件名、目录名或卷标语法不正确“解决方法
  4. 中国IDC行业年度综合实力排名前十
  5. 内存分配之动态分区分配的三种算法
  6. Android Jetpack从入门到精通(深度好文,值得收藏)
  7. flume简单使用案例
  8. 交换机划分Vlan配置
  9. Python多进程、多线程编程
  10. JavaScript笔记 | 作用域和闭包 |《你不知道的JavaScript(上卷)》第一部分