强缓存:浏览器不需要发送请求到服务器,直接从浏览器缓存中获取数据。浏览器不需要和服务器进行交互就可以获取数据,这样极大提高了页面访问速度。
协商缓存:协商缓存,顾名思义就是需要浏览器和服务器协商一下,浏览器只需要向服务器发送一个请求头,看该资源是否被修改过,如果资源没有变化,服务器返回304状态码(Not modified),直接让浏览器从本地缓存中获取资源。
强缓存不需要和服务器进行交互;而协商缓存需要和轻量级服务器进行交互。
这两种缓存都提高了页面的访问速度,减少了服务器的负载。
强缓存的工作流程:
1.浏览器发出请求
2.首先检查浏览器缓存中是否有请求的该资源,如果有该资源,就检查缓存控制头(cache-controler)或expires,看看是否到期。
如果没有到期,就直接从缓存中加载该资源;如果到期了,就向服务器请求新的资源。
3.浏览器向服务器发起请求,服务器进行响应,并返回对应的资源和缓存控制头。
4.浏览器获取到新的资源,进行渲染。并更新本地缓存。
协商缓存的工作流程:
1.浏览器向服务器发起请求。
2.浏览器检查浏览器缓存中该资源是否存在。如果存在,则将该资源的响应头(包含If-Modified-Since或Etag等)发送给服务器;如果不存在,则该请求就变成了一个普通的请求。
3.服务器检查该资源的状态。如果该资源没有修改,服务器则返回304(Not modified)状态码。如果该资源被修改了, 服务器返回200和新的资源内容。
4.浏览器处理请求。响应状态码为304,则直接加载本地缓存,渲染页面。响应状态码为200,则加载返回的新的资源,然后渲染页面。