梗概

  • 协商缓存是根据服务器与浏览器之间的通信来确定是否使用缓存。如果协商缓存生效,服务器会返回很小的响应结果,节省了带宽的使用。

协商缓存所用到的字段

一般来说,只使用两者之一:

  • Last-ModifiedIf-Modified-Since:服务器在响应头中返回资源的最后修改时间(Last-Modified),浏览器在后续请求中通过 If-Modified-Since 头字段将上次请求返回的最后修改时间发送给服务器。如果资源在此时间后没有发生变化,服务器会返回 304 Not Modified 状态码,告诉浏览器可以使用缓存。
  • ETagIf-None-Match:服务器在响应头中返回资源的唯一标识符(ETag),浏览器在后续请求中通过 If-None-Match 头字段将上次请求返回的 ETag 发送给服务器。如果资源的 ETag 与服务器上的匹配,服务器会返回 304 Not Modified 状态码,客户端就能使用已有缓存,否则需要更新缓存