浏览器缓存

在浏览器输入网址发生的几种缓存:
1、dns缓存
2、本地缓存(memory)
3、http缓存
4、服务端缓存

一、DNS缓存

我们所用的网址一般是一个域名,通过这个域名,解析出对应的ip地址就是dns解析的过程。在解析后将获得的ip地址缓存起来,当下一次再有相同域名的请求时,先从浏览器自身的dns缓存进行查找,如果缓存有效,会直接返回ip地址,如果找不到,则继续读取操作系统hosts文件看是否存在映射关系,如果存在,解析结束,如果不存在,继续在本地dns服务器中查找,如果还找不到,会向根服务器发出请求,进行递归查找。

三、本地缓存

不受开发者控制,当资源被放入内存后,下次请求,将不再通过网络,而是直接从内存读取
memory cache 机制保证了一个页面中如果有两个相同的请求,只会请求一次。

四、HTTP缓存(硬盘缓存)

  • 1、 http缓存机制
    浏览器每次发起请求,都会在浏览器中查找该请求的结果与缓存标识。
    浏览器每次拿到请求结果,都会把请求结果和缓存标识存入浏览器缓存。
  • 2、http缓存分类。
  • 强制缓存
    通过Expires和Cache-Control来控制,Cache-Control优先级更高
    Cache-Control取值
    (1)public:所有内容都将被缓存(客户端和代理服务器都可缓存)
    (2)private:所有内容只有客户端可以缓存,Cache-Control的默认取值
    (3)no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
    (4)no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
    (5)max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效
    示例:Cache-Control: public, max-age=3600表示这是一个公开资源,请缓存1个小时。
  • 协商缓存
    强制缓存失效后,会向服务器发起一个带有缓存的请求,由服务器根据缓存标识决定是否使用该缓存。
    协商缓存生效,返回304,协商缓存失效,返回200和请求结果,同时可以附带上新的缓存指令,浏览器缓存新的内容。
    If-Modified-Since:资源上次修改时间
    If-None-Match:资源编号 优先级更高

你可能感兴趣的:(浏览器缓存)