浏览器的缓存原理 (强缓存以及协商缓存)
基本认知
. Web 服务缓存: ⼤致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN 服务器缓存)、浏览器缓存。
. 浏览器缓存:也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。
HTTP缓存
.HTTP缓存: 优化⻚⾯加载的效率, 如果没有缓存策略, 每次重新加载⻚⾯, 会⾮常慢!
强缓存
强缓存: 检查过期时间, 判断缓存是否失效, 如果不失效, 直接⽤, 不发请求⼤⼤的减少了 服务器的请求次数, 在过期时间内, 直接从客户端内存中读
Cache-Control : 指定⼀个过期时间 (3600s), 这个资源你加载到后, 可以⽤ 3600s
Expires :缓存过期时间,⽤来指定资源到期的时间,是服务器端的具体的时间点。
协商缓存 (强缓存未命中-发送请求进⾏协商)
协商缓存:强缓存命中失效了, 超过过期时间了, 拿着标识(最后的修改时间, 唯⼀标识etag), 去问服务器, 是否真的过期了如果验证通过, 服务器会直接响应 304, 且不会返回资源
Last-Modify:服务器收到If-Modify-Since后,根据实际服务器的资源的最后修改时间, 进⾏判断是否命中缓存。
ETag:可以保证每⼀个资源是唯⼀的,资源变化都会导致ETag变化,ETag值的变更则说明资源状态已经被修改
http缓存流程图:
http常⻅的状态码有哪些? 以及他们分别表示什么?
成功(2XX)
重定向(3XX)
因为post请求, 是⾮幂等的, 从302中, 细化出了 303 和 307
简⽽⾔之: 301 302 307 都是重定向304 协商缓存
客户端错误(4XX)
服务端错误(5XX)
问到状态码: 304 400 401?
当前端看到控制台报出 400 时, 请问⼀定是后台的问题么? 如何排查错误? (前端先检查传参格式是否有误)
层参考模型
- 应用层 :支持各种网络应用: FTP、SMTP、HTTP
- 传输层:进程的数据传输 TCP、UDP
- 网络层:源主机到目的主机的数据分组路由与转发 IP、ICMP、OSPF协议
- 数据链路层:把网络层传下来的数据包组装成帧 Ethrnet,PPP
- 物理层 :比特传输
计量单位
- 1bit(位) :1bit
- 1Byte (字节):1Byte =8bit
- 1KB=1024Byte=
1*210Byte - 1M=1024KB =
1*220Byte 210 210 - 1G=1024MB
- 1T=1024GB
TCP协议是什么?
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。TCP 使用校验、确认和重传机制来保证可靠传输 而 HTTP协议 就是建立在TCP协议之上的一种应用。
一次完整的HTTP服务过程是什么
当我们在web浏览器的地址栏中输入: www.baidu.com ,具体发生了什么?
- 对 www.baidu.com 这个网址进行DNS域名解析,得到对应的IP地址
- 根据这个IP,找到对应的服务器,发起TCP的三次握手
- 建立TCP连接后,发起HTTP请求
- 服务器响应HTTP请求,浏览器得到html代码
- 浏览器解析html代码,并请求html代码中的资源(如is、CSS、图片等) (先得到html代码,才能去找这些资源)
- 浏览器对页面进行渲染呈现给用户 7.服务过程完毕。关闭TCP连接,四次挥手 注:
1.DNS怎么找到域名的? DINS域名解析采用的是递归查询的方式,过程是,先去找DNS缓存->缓存找不到就去找根域名服务器->根域名又会去找下一级,这样递归香找之后,找到给我们的web浏览哭
hosts
localhost是一个域名, 127.0.0.1为IP地址。 Windows系统中, 约定127.0.0.1为本地IP地址。 localhost是其对应的域名。
Host文件的位置:在XP 、win7系统中,HOST文件位于系统盘C:\Windows\System32\drivers\etc中,如果进去没有看到Hos文件,因为某些系统将Host文件隐藏了。
什么是HOST文件: Hosts是 一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名 与其对应的IP地址建立一个关联数据库",当用户在浏览器中输入一个 需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再 会将网址提交DNS域名解析服务器进行IP地址的解析,如果发现是被屏蔽的IP或域名,就会禁止打开此网页!