从一个url地址到最终页面渲染完成,发生了什么?

1、DNS 解析 : 将域名地址解析为IP地址

  • 浏览器DNS缓存
  • 系统DNS缓存
  • 路由器DNS缓存
  • 网络运营商DNS缓存
  • 递归搜索: www.baidu.com
    • .com域名下查找DNS解析
    • .baidu域名下查找DNS解析
    • www域名下查找DNS解析
    • 还找不到出错了
      2、TCP连接三次握手
      3、发送请求
  • 请求报文
    4、接收响应
  • 响应报文
    5、渲染页面
  • 遇到HTML标记,浏览器调用HTML解析器解析成 Token 并构建dom树;
  • 遇到style/link标记,浏览器调用css解析器,处理css标记并构建 cssom树;
  • 遇到javascript标记,调用javascript解析器,处理script代码(绑定事件,修改dom树/cssom树)
  • 将dom 树和cssdom树和cssom树合并成渲染树
  • 根据渲染树来计算布局,计算每个节点的几何信息(布局)
  • 将各个节点颜色重绘到屏幕上(渲染)

注意: 这五个步骤不一定按照顺序执行,如果dom树或cssom树被修改了,可能会指定多次重绘重排。
6、 断开连接, TCP 四次挥手

从一个url地址到最终页面渲染完成,发生了什么?的更多相关文章

  1. 输入URL地址到最终页面渲染完成,发生了什么事

    1. 域名DNS解析 - 浏览器DNS缓存 - 系统DNS缓存 - 路由器DNS缓存 - 网络运营商DNS缓存 - 递归搜索...... 2. TCP连接: TCP三次握手 - 第一次握手,由浏览器发 ...

  2. 从一个url输入浏览器到页面渲染出来,这个过程都发生了哪些事情?

    经典问题:在浏览器输入一个url后,会发生什么事情呢? (1)假设是简单的http请求(GET),IPV4,无代理. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,请略过中间步骤,直接跳到 ...

  3. 13.从url 输入网址到最终页面渲染完成

    从url 输入网址到最终页面渲染完成,发生了什么? 1.DNS解析:将域名地址解析为IP地址 先读取: -浏览器DNS缓存 -系统DNS缓存 -路由器DNS缓存 -网络运营商DNS缓存 -递归搜索:b ...

  4. 使用UrlConnection请求一个url地址获取内容

    访问网络需要加Internet权限:android.permission.INTERNET 使用UrlConnection请求一个url地址获取内容:             //1.创建一个Url对 ...

  5. ajax页面跳转(后台返回的是一个url地址,或者自己传进去的是url地址)

    function modifyMerchantInfo(merchant_code) { $.ajax({ url: '/intra/crm/merchant/OrderMgr.htm?method= ...

  6. 判断一个url地址是不是404状态(用curl函数)

    <?php $url = "http://www.kxblogs.com/n/20161108/74429879.html"; $ch = curl_init (); cur ...

  7. 用jq编码解码一个url地址

    介绍一下编码解码函数对 1.    escape /unescape   主要用于汉字编码,返回字符的unicode编码值, 对“+”不能编码 2.     encodeURI / decodeURI ...

  8. Swift - 通过url地址打开web页面

    通过UIApplication.sharedApplication().openURL()方法,可以使用浏览器打开相应的网页. 1 2 3 var urlString = "http://h ...

  9. 从输入一个URL到页面渲染的流程简介

    首先说明以下是我参考网上答案和自己的思考,给出自己的想法,如果有问题,欢迎大家吐槽从用户在浏览器中输入一个URL,到整个页面渲染,这个过程中究竟发生了什么呢?今天先简单写下整个过程,后面再一点点完善. ...

随机推荐

  1. 排列组合( Lindström–Gessel–Viennot lemma 定理)

    链接:https://www.nowcoder.com/acm/contest/139/A来源:牛客网 Monotonic Matrix 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ ...

  2. java虚拟机规范(se8)——java虚拟机的编译(四)

    3.12 抛出和处理异常 在程序中使用throw关键字来抛出异常.编译结果很简单. void cantBeZero(int i) throws TestExc { if (i == 0) { thro ...

  3. mybatis的缓存机制及用例介绍

    在实际的项目开发中,通常对数据库的查询性能要求很高,而mybatis提供了查询缓存来缓存数据,从而达到提高查询性能的要求. mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSessio ...

  4. shell 中cut

    和awk差不多的功能 上面的例子中,把 root:x:0:0:root:/root:/bin/bash 重定向到cut命令里,-d表示分隔符,这里使用冒号: 作为分隔符,-f 表示字段,选择了第1,和 ...

  5. 第6篇如何访问pod

        一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 con ...

  6. linux-redis-install

    安装redis3.2.9 wget cd make 编译完成后,将redis-cli redis-server redis-conf redis-benchmark配置文件复制到usr/redis文件 ...

  7. 转载 初学者必看——最简单最清晰的Struts2项目搭建流程

    https://blog.csdn.net/key0323/article/details/50773499 在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学 ...

  8. java--split,index,StringTokenizer比较

    import java.util.StringTokenizer; public class SplitDemo { //jdk8 public static void main(String[] a ...

  9. redis单节点安装及cluster的安装

    单点安装 wget http://download.redis.io/releases/redis-4.0.2.tar.gz tar zxvf redis-4.0.1.tar.gz -C /usr/l ...

  10. elasticsearch 6.x 安装search guard

    前言 es之前版本一直无用户验证功能,不过官方有提供一x-pack,但是问题是付费.在es的6.3.2版本中,已经集成了x-pack,虽然es团队已经对x-pack开源,但是在该版本中如果需要使用到安 ...