从输入URL到页面显示(小白理解版)-努力学习Java的小白

对于最经常问的问题:
从输入URL到页面显示经历了什么?
脑海里立马浮现出
1、在浏览器拿到URL
2、根据DNS解析,获得IP地址
3、根据IP地址和端口号,向目标服务器发送TCP连接请求
4、在TCP连接上发送HTTP请求报文,请求内容
5、服务器根据HTTP请求报文,处理并返回HTTP响应
6、浏览器收到HTTP响应,解析HTML代码,渲染网页结构和样式,同时根据HTML中其他资源URL再发送HTTP请求,到完全加载
7、浏览器不需要和服务器通信,主动关闭TCP连接或等服务器关闭请求
但是在自己做了个web项目后,一直理不通项目代码,本地缓存,redis这种用来缓存的数据库,以及MySQL应该在那个环节呢?
对这七步进行更一步解析:
1、在浏览器拿到URL
2、根据DNS解析,获得IP地址(DNS解析步骤,从本地DNS找缓存,没有则根据递归/迭代的方式去根DNS服务器,顶级域DNS服务器,权威DNS服务器去找,用的是UDP连接 es:在区域传输时候用TCP协议)
3、根据IP地址和端口号,向目标服务器发送TCP连接请求(TCP三次握手,如果是HTTPS有TLS/SSL三次握手,HTTP3.0为QUIC协议)
4、在TCP连接上发送HTTP请求报文,请求内容(这块就到了应用服务器的controller了,应用服务器进行处理)
5、服务器根据HTTP请求报文,处理并返回HTTP响应(controller调用业务层即service,service根据mapper/dao来实现数据库读取)
但!这是一般正常逻辑,我们还有本地缓存还有redis缓存呢,它们部署在哪里呀?
对于本地缓存,我之前一直以为和cookie一样在客户端本地,一次偶然机会和同门聊天才知道是在应用服务器的内存中!!!(原谅我这么笨)
所以对于5而言,业务逻辑中应该先看本地缓存(如果有),然后再走Redis缓存(大概率是单独服务器中部署,不与其他应用共存),如果Redis中还没有再走MySQL,至此逻辑通顺。
继续往下看
6、浏览器收到HTTP响应,解析HTML代码,渲染网页结构和样式,同时根据HTML中其他资源URL再发送HTTP请求,到完全加载(这块写的感觉就是用的http1.0,完全是只有客户端来请求,我觉得在这应该更新一下,对于http1.0后怎样?比如1.1有长连接,并且服务端主动推送静态资源来达到快速渲染,或者对于一些具有CDN的可以用CDN来快速推送等等)
7、浏览器不需要和服务器通信,主动关闭TCP连接或等服务器关闭请求

完结,撒花,如果有不对请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一十无乘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值