梗概
- 协商缓存是根据服务器与浏览器之间的通信来确定是否使用缓存。如果协商缓存生效,服务器会返回很小的响应结果,节省了带宽的使用。
协商缓存所用到的字段
一般来说,只使用两者之一:
Last-Modified和If-Modified-Since:服务器在响应头中返回资源的最后修改时间(Last-Modified),浏览器在后续请求中通过If-Modified-Since头字段将上次请求返回的最后修改时间发送给服务器。如果资源在此时间后没有发生变化,服务器会返回304 Not Modified状态码,告诉浏览器可以使用缓存。ETag和If-None-Match:服务器在响应头中返回资源的唯一标识符(ETag),浏览器在后续请求中通过 If-None-Match 头字段将上次请求返回的ETag发送给服务器。如果资源的ETag与服务器上的匹配,服务器会返回304 Not Modified状态码,客户端就能使用已有缓存,否则需要更新缓存