github对于我们研发同学是很重要的代码库和学习工具。一般通常会想到的是花钱去用某些fq软件以达到进入网站的目的。 但今天我要从前端的角度说一个方法,这时我们可以回想一下前端面试的一个经典问题:
在浏览器输入url后发生了都发生了什么 ?
主要包括以下几个基本步骤:
浏览器的地址栏输入URL并按下回车。
浏览器查找当前URL是否存在缓存,并比较缓存是否过期。
DNS解析URL对应的IP。(我们在这一步下手)
根据IP建立TCP连接(三次握手)。
HTTP发起请求。
服务器处理请求
浏览器接收HTTP响应。
关闭TCP连接(四次挥手)。
构建DOM树, 渲染页面。
首先,介绍什么是DNS,什么是DNS解析
DNS (Domain Name System) 是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。
DNS 域名解析,简单地说就是把域名翻译成 IP 地址。例如:把 www.baidu.com 域名解析成对应 IP 220.181.38.251
域名解析的过程实际是将域名还原为IP地址的过程
具体操作步骤:
- 打开浏览器,进入 域名ip查询 查询三个ip:
- github.com
- assets-cdn.github.com
- github.global.ssl.fastly.net
⚠️ 可能某个域名查出来的ip会有多个,随便复制一个即可。
2. 更改电脑本地 hosts 文件,把搜出来的 域名和 Ip 映射关系 添加进去
首先输入 url 后,浏览器会先检查 本地hosts文件 是否有网址与IP 映射关系,如果有就用这个IP地址去映射,完成域名解析。
如果没找到则会查找本地DNS解析器缓存,如果查找到则返回。
如果还是没有找到则会查找本地DNS服务器,如果查找到则返回。
最后迭代查询,按根域服务器 ->顶级域,.com->第二层域,baidu.com ->子域,www.xxx.com的顺序找到IP地址。
3. 重新访问 github.com 分析页面性能
改动之前:
改动之后: