【HTML】从输入 URL 到页面加载完成的过程中都发生了什么事情?

创建时间:2016-09-05 00:07:17
原文地址:http://fex.baidu.com/blog/2014/05/what-happen/

阅读请出门左转 原文地址

【HTML】从输入 URL 到页面加载完成的过程中都发生了什么事情?_第1张图片
image

总结

这一篇文章写的知识基本都是很底层的东西,权当增长见识, 因为单纯的前端,这里的内容就需要花费很大的精力, 才有可能『搞懂』。
【这两天偷懒,没有自己自己去整理出文章,转载一些优秀的文章,放到这里】

目录:

背景

【HTML】从输入 URL 到页面加载完成的过程中都发生了什么事情?_第2张图片
image

第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情?

  • 从触屏到 CPU
  • CPU 内部的处理
  • 从 CPU 到操作系统内核
  • 从操作系统 GUI 到浏览器
  • 扩展学习

第二个问题:浏览器如何向网卡发送数据?

  • 从浏览器到浏览器内核
  • HTTP 请求的发送
  • DNS 查询
  • 通过 Socket 发送数据
  • Socket 在内核中的实现
  • 底层网络协议的具体例子
  • 扩展学习

第三个问题:数据如何从本机网卡发送到服务器?

  • 从内核到网络适配器(Network Interface Card)
  • 连接 Wi-Fi 路由
  • 运营商网络内的路由
  • 主干网间的传输
  • IDC 内网
  • 服务器 CPU
  • 扩展学习

第四个问题:服务器接收到数据后会进行哪些处理?

  • 负载均衡
  • LVS
  • 反向代理
  • Web Server 中的处理
  • 进入后端语言
  • Web 框架(Framework)
  • 读取数据
  • 扩展学习

第五个问题:服务器返回数据后浏览器如何处理?

  • 从 01 到字符
  • 外链资源的加载
  • JavaScript 的执行
  • 从字符到图片
  • 跨平台 2D 绘制库
  • GPU 合成
  • 扩展学习

第六个问题:浏览器如何将页面展现出来?

  • Framebuffer
  • 从内存到 LCD
  • LCD 显示
  • 扩展学习

本文所忽略的内容

为了编写方便,前面的介绍中将很多底层细节实现忽略了,比如:

内存相关

  • 堆,这里的分配策略有很多,比如 malloc 的实现
  • 栈,函数调用,已经有很多优秀的文章或书籍介绍了
  • 内存映射,动态库加载等
  • 队列几乎无处不在,但这些细节和原理没太大关系

各种缓存

  • CPU 的缓存、操作系统的缓存、HTTP 缓存、后端缓存等等

各种监控

  • 很多日志会保存下来以便后续分析

你可能感兴趣的:(【HTML】从输入 URL 到页面加载完成的过程中都发生了什么事情?)