Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
zhongxia245 opened this issue Sep 4, 2016 · 1 comment

Comments

@zhongxia245
Copy link
Owner

zhongxia245 commented Sep 4, 2016

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

阅读请出门左转 原文地址

image

总结

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

目录:

背景

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 缓存、后端缓存等等

各种监控

  • 很多日志会保存下来以便后续分析
@zhongxia245
Copy link
Owner Author

偷个懒,看到好文章,收藏一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant