为什么很多站点第二次打开速度会很快?

传参直接上结论:
1.DNS缓存
2.浏览器资源缓存

DNS缓存过程:
1.检查浏览器缓存中是否有IP地址与域名的映射,如果有解析结束。如果没有,进行第二步。
2.检查操作系统的hosts文件中是否有IP地址与域名的映射,如果有解析结束。如果没有,下一步。
3.检查本地域名服务器中是否有IP地址与域名的映射,如果有解析结束。如果没有,下一步
4.本地域名服务器向根域名服务器查询,该过程不会返回映射关系,而是返回顶级域名服务器的IP地址。
5.本地域名服务器向顶级域名服务器查询,同样,该过程不会返回映射关系,而是返回权威域名服务器的IP地址。
6.本地域名服务器向权威域名服务器查询,得到该域名对应的IP地址。
7本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
8.操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来
9.至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起来

1,2,3递归
4,5,6,7迭代

浏览器缓存:
缓存的资源是JS,图片和CSS
(HTML)是随时变化的所以不能缓存。
HTTP缓存策略有两种(强缓存+协商缓存)
强缓存:从本地缓存中获取文件。
步骤是:初次请求时,浏览器向服务器发送请求。服务器返回资源和cache-control,cache-control一般用来表示资源的最大缓存时间。再次发送请求时,先检查cache-control是否过期,没过期就直接从本地获取资源。若过期就重新请求服务器获取资源更新cache-control。
协商缓存:服务端判断客户端的资源是否一致,若一致返回304.不一致返回新的资源。
初次请求时,浏览器向服务器发送请求。服务器返回资源和Last-modified和ETag,Last-modified用来标识资源最后修改时间。而ETag是资源的唯一标识符,如同人的指纹一样是唯一的。将Last-modified的值保存在请求头的If-modified-since字段中。将ETag的值保存在请求头的If-None-Match字段中。再次发送请求时,请求头携带If-modified-since和If-None-Match。服务端通过If-modified-since和If-None-Match判断资源是否更新。如没更新则返回04,浏览器读取缓存。如发生更新,则服务器返回新的资源和新的Last-modified和Etag值。
注意:Etag的优先等级大于Last-modified
先看是否命中强缓存,再看是否命中协商缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值