1.基本原理
1)浏览器在加载资源时,根据请求头的expire和cache-control判断是否命中强缓存,是则直接从缓存读取资源,不会发送请求到服务器。
2)如果没有命中 强缓存,浏览器一定会发送一个请求到服务器,通过last-modified和etag验证资源是否命中协商缓存,如果命中,服务器会将这个请求返回,但是不会返回这个数据的资源依然是从缓存中读取资源
3)如果前面两者都没有命中,直接从服务器加载资源
2.相同点
如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据
3.不同点
强缓存存不发请求到服务器,协商缓存会发送请求到服务器
二、强缓存
强缓存通过Expire和Cache-Control两种响应头实现
三、协商缓存
当浏览器对某个资源的请求没有命中强缓存,就会发送一个请求到服务器,验证协商缓存是否命中,如果协商缓存命中,请求响应返回的http状态为304并且会显示一个Not Modified的字符串。协商缓存是利用的是【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】这两对Herder来管理的