强缓存
强缓存是指通过资源请求时返回的缓存相关参数(主要通过Expires和cache-control来进行判断),如果命中条件,则本地资源副本没有过期,则继续使用缓存。
Expires
Exprires表示的是该资源的时间。由于实际环境中,客户端时间可能与服务端时间有误差,另外Expires是HTTP1.0的功能。所以目前主要使用的还是cache-control。
Cache-Control
Cache-Control可能的值有private,public,max-age,no-cache,no-store
pragma
pragma同样也是HTTP1.0中的通用首部。优先级上,pragma>cache-control>Expires
协商缓存
若是没有命中强缓存,则发送携带附加条件的http请求到服务端,服务端根据请求中缓存相关参数(主要通过Last-Modified和Etag)
Last-Modified
Last-Modified用来保存浏览器请求资源时服务端返回的该资源的上一次的修改时间。当浏览器非第一次请求时,服务器会用来和本地资源的修改时间进行比较。若是一致,则返回状态码为304的只含有head的响应报文;若是不一致,则返回状态码为200的包含完整资源内容的响应报文。
Etag
服务器为资源的每次修改的版本生成了一个字符串来作为标记,当客户端第一次请求资源时,会将标记作为Etag传送给客户端。当客户端非第一次请求时,对应的操作就和Last-Modified相似了。比较Etag,若是一致,则返回304;若是不一致,则返回200.