强缓存
使用强缓存策略时,如果缓存的资源文件没有过期,则直接使用缓存的资源文件,不必再向服务器发起请求。
协商缓存
如果没有命中强缓存并且设置了协商缓存,协商缓存就会发挥作用了。命中协商缓存的条件有两个:max-age=xxx过期了;值为no-cache。使用协商缓存策略时,会先向服务器发送一个请求,如果资源文件没有发生修改,则返回一个304,让浏览器使用缓存的资源文件;如果资源文件发生了修改,则返回修改后的资源文件。
强缓存和协商缓存的区别
强缓存和协商缓存在缓存命中时都会直接使用缓存的资源文件,区别只在于协商缓存会向服务器发送一次请求。在实际的缓存机制中,强缓存策略和协商缓存策略是一起使用的:浏览器首先会根据请求的信息判断强缓存是否命中,如果命中则直接使用缓存的资源文件。如果不命中则向服务器发送一个请求,使用协商缓存:如果协商缓存命中,则服务器不返回资源文件,浏览器直接使用缓存的资源文件,如果协商缓存不命中,则返回最新的资源文件给浏览器。