1 DNS缓存

首先明确什么是DNS----全名为Domain Name System,即域名系统
DNS解析
简单的说,通过域名,最终得到该域名对应的ip地址叫做域名解析(或主机解析)

www.zuofc.com (域名) - DNS解析 -> 111.222.33.444 (IP地址)

DNS缓存
有dns的地方,就有缓存。浏览器,操作系统、Local DNS、根域名服务器,它们都会对DNS的结果做一定程度的缓存
DNS的查询过程如下:
1.首先是搜索浏览器自身的DNS缓存,如果存在,则域名解析到此完成。
2.如果浏览器自身的缓存里面没有找到对用的条目,那么尝试读取操作系统的hosts文件是否存在对应的映射关系,如果存在,则域名解析到此完成
3.如果本地hosts文件不存在映射关系,则查找本地DNS服务器(ISP服务器,或者自己手动设置的DNS服务器,)如果存在,则域名解析到此完成。
4.如果本地DNS服务器还没有找到,它就会向根服务器发出请求,进行递归查询

2 CND缓存

全称Content Delivery Network,即内容分发网络
摘录一个形象的比喻,来理解CDN是什么。

10年前,还没有火车票代售点一说,12306.cn更是无从说起。那时候火车票还只能在火车站的售票大厅购买,而我所在的小县城并不通火车,火车票都要去市里的火车站购买,而从我家到县城再到市里,来回就是4个小时车程,简直就是浪费生命。后来就好了,小县城里出现了火车票代售点,甚至乡镇上也有了代售点,可以直接在代售点购买火车票,方便了不少,全市人民再也不用在一个点苦逼的排队买票了。

简单的理解CDN就是这些代售点(缓存服务器)的承包商,他为买票者提供了便利,帮助他们在最近的地方(最近的CDN节点)用最短的时间(最短的请求时间)买到票(拿到资源),这样去火车站售票大厅排队的人也就少了。也就减轻了售票大厅的压力(起到分流作用,减轻服务器负载压力)。
简而言之:
用户在浏览网站时,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求。

CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的的字段来设置CDN边缘节点数据缓存时间。

Cache-control: max-age

当浏览器向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向服务器发出回源请求,从服务器拉取最新数据,更新本地缓存,并将最新数据返回给客户端。 CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。

CDN的优势

1.CDN节点解决了跨运营商和跨域访问的问题,访问延时大大减低
2.大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源服务器的负载

3 浏览器缓存(http缓存)

android 提前缓存一部分dns_服务器

什么时浏览器缓存?

android 提前缓存一部分dns_android 提前缓存一部分dns_02


简而言之:浏览器缓存其实就是浏览器保存通过HTTP获取的所有资源,是浏览器将网络资源存储在本地的一种行为

浏览器的三级缓存原理 (访问缓存优先级)

  1. 先在内存中查找,如果有,直接加载。
  2. 如果内存中不存在,则在硬盘中查找,如果有直接加载。
  3. 如果硬盘中也没有,那么就进行网络请求。
  4. 请求获取的资源缓存到硬盘和内存。
    浏览器缓存的优点
    1.减少了冗余的数据传输
    2.减少了服务器的负担,大大提升了网站的性能
    3.加快了客户端加载网页的速度

总结

当浏览器再次访问一个已经访问过的资源时,它会这样做:

1.看看是否命中强缓存,如果命中,就直接使用缓存了。

2.如果没有命中强缓存,就发请求到服务器检查是否命中协商缓存。

3.如果命中协商缓存,服务器会返回 304 告诉浏览器使用本地缓存。

4.否则,返回最新的资源。