用户打开浏览器输入域名到显示网页,都发生了什么。
DNS解析
域名转换成IP地址的过程,称之为DNS解析。
1.浏览器DNS记录缓存。
2.hosts文件和操作系统缓存
3.如果上面2个DNS缓存都没有记录,则向域名解析服务器发送解析请求。
4.如果域名解析器都没有,那就复杂了要递归+迭代的去根域服务器发出请求然后一步步查,具体我也不知道。
发起TCP请求
浏览器会选择一个大于1024的本级端口向目标IP的80端口发起TCP连接请求。经过TCP3次握手流程,建立了TCP连接。
发起http请求
HTTP请求是在刚才建立的TCP请求上,按照HTTP协议标准发送一个网页索要的请求。
负载均衡(可能有可能没有)
根据分配的算法和规则,选择一台后端的web服务器,建立TCP连接,转发浏览器发出的网页请求。服务器收到请求,产生响应,发回给浏览器
浏览器渲染
浏览器根据页面内容,生成DOM tree。根据css内容,生成css rule tree。调用JS引擎执行js代码
根据dom tree cssrule 生成render tree
根据 render tree 渲染网页
浏览器解析页面内容的时候,发现页面引用了其他未加载的静态文件。
静态资源加载
什么是CDN?如果我在广州访问杭州的淘宝网,跨省的通信必然造成延迟。如果淘宝网能在广东建立一个服务器,静态资源我可以直接从就近的广东服务器获取,必然能提高整个网站的打开速度,这就是CDN。CDN叫内容分发网络,是依靠部署在各地的边缘服务器,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度。
接下来的流程就是浏览器根据url加载该url下的图片内容。本质上是浏览器重新开始第一部分的流程,所以这里不再重复阐述。区别只是负责均衡服务器后端的服务器不再是应用服务器,而是提供静态资源的服务器。