DNS 缓存
- dns 全称 Domain Name System ,即域名系统;万维网上作为域名和 ip 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ip 数串,dns 协议运行在 udp 协议之上,使用端口号 53;
- dns 解析:简单的说,通过域名,最终得到该域名对应的 ip 地址的过程叫做域名解析 (ricepudding.cn -> DNS解析 -> 11.222.33.444);
- dns 缓存,有 dns 的地方就有缓存,浏览器、操作系统、Local DNS、根域名服务器,它们都会对 dns 结果做一定程度的缓存;
- 首先搜索浏览器自身的 dns 缓存,如果存在,则域名解析到此完成;
- 如果浏览器自身的缓存里面没有找到对应的条目,那么会尝试读取操作系统的 hosts 文件看是否存在对应的映射关系,如果存在,则域名解析到此完成;
- 如果本地 hosts 文件不存在映射关系,则查找本地 dns 服务器 (isp 服务器或者自己手动设置的 dns 服务器),如果存在,域名到此解析完成;
- 如果本地 dns 服务器还没找到的话,它就会向根服务器发出请求,进行递归查询;
CDN 缓存
CDN 全称 Content Delivery Network 即内容分发网络,摘录一个形象的比喻,来理解 CDN 是什么
- 10 年前,还没有火车票代售点一说,12306.cn 更是无从说起,那时候火车票还只能在火车站的售票大厅购买,而我所在的小县城并不通火车,火车票都要去市里的火车站购买,而从我家到县城再到市里,来回就是 4 个小时车程,简直就是浪费生命;后来就好了,小县城里出现了火车票代售点,甚至乡镇上也有了代售点,可以直接在代售点购买火车票,方便了不少,全市人民再也不用再苦逼的排队买票了;
- 简单的理解 CDN 就是这些代售点 (缓存服务器) 的承包商,他为买票者提供了便利,帮助他们在最近的地方 (最近的 CDN 节点) 用最短的时间 (最短的请求时间) 买到票 (拿到资源),这样去火车站售票大厅排队的人也就少了;也就减轻了售票大厅的压力 (起到分流作用,减轻服务器负载压力);
- 用户在浏览网站的时候 CDN 会选择一个离用户最近的 CDN 边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器 (假设源站部署在北京电信机房) 上了;
CDN 缓存
- 关于 CDN 缓存,在浏览器本地缓存失效后,浏览器会向 CDN 边缘节点发起请求;类似浏览器缓存,CDN 边缘节点也存在着一套缓存机制。CDN 边缘节点缓存策略因服务商不同而不同,但一般都会遵循 http 标准协议,通过 http 响应头中的 Cache-control: max-age 来设置 CDN 边缘节点数据缓存时间;
- 当浏览器向 CDN 节点请求数据时,CDN 节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN 节点就会向服务器发出回源请求,从服务器拉取最新数据,更新本地缓存,并将最新数据返回给客户端。 CDN 服务商一般会提供基于文件后缀、目录多个维度来指定 CDN 缓存时间,为用户提供更精细化的缓存管理;
CDN 优势
- CDN 节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
- 大部分请求在 CDN 边缘节点完成,CDN 起到了分流作用,减轻了源服务器的负载;
http 缓存
第 5️⃣ 座大山:一次完整页面请求经历的七个步骤
上一篇