表示是否能缓存的指令
public指令
当指定使用public命令时,明确表明其他用户也可利用缓存
private指令
当指定private指令后,响应只以特定的用户作为对象,与public行为相反,对于非特定用户,代理服务器则不会返回缓存
no-cache 指令
使用该指令的目的是为了防止从缓存中返回过期的资源。
客户端发送的请求包含该指令,表示客户端不会接受缓存过的响应,中间的缓存服务器就必须把客户端请求转发给源服务器;
服务器返回的请求包含该指令,那么缓存服务器不能对资源进行缓存。源服务器以后将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作
(no-cache=Location)
若像上述一样对no-cache具体指定参数值,那么客户端在接受到这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存。换言之,无参数值的首部字段可以使用缓存。只能在响应指令中指定该参数。
控制可执行缓存的对象的指令
no-store指令
当使用no-store指令时,暗示请求(和对应的响应)或响应中包含机密信息。因此,该指令规定缓存不能在本地存储请求或相应的任意部分。
指定缓存期限和认证的指令
s-maxage指令
示例:Cache-control:s-maxage=xxxx(单位:秒)
只适用于供多位用户使用的公共缓存服务器(一般指代理服务器),对同一用户重复返回响应的服务器来说,该指令无任何作用。
max-age指令
示例:Cache-control:max-age=xxxx(单位:秒)
客户端发送包含该指令,若判定缓存资源的缓存时间比指定时间数值小,则接受缓存的资源。若max-age=0,那么缓存服务器需要将请求转发给源服务器;
服务器返回的响应包含该指令,缓存服务器在指定时间内将不对缓存资源的有效性再作确认。
min-fresh指令
示例:Cache-control:min-fresh=xxxx(单位:秒)
该指令要求缓存服务器返回至少还未过指定时间的缓存资源。比如,设置60秒,过了60秒的资源都无法作为响应返回。
max-stale
示例:Cache-control:max-stale=xxxx(单位:秒)
该指令可指示缓存资源。即使过期也照常接收。若未指定具体数值,那么无论过多久,客户端都会接受响应。如果指令中指定具体数值,即使过期,只要仍处于max-stale指定的时间内,仍会被客户端接收。
only-if-cached
该指令表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。亦即缓存服务器不重新加载响应,也不会再确认资源有效性,若发生缓存服务器本地缓存无响应,则返回504状态码Gateway Timeout.
must-revalidate
使用该指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。
若无法获取,返回504状态码,另外该指令忽略请求的max-sale指令
proxy-revalidate
该指令要求所有的缓存服务器在接受到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性
no-transform
该指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型(可以防止缓存或代理压缩图片等类似操作)
cache-control扩展
实例:Cache-control:private,community=“UCI”
通过cache-extension(标记)(token),可以扩展Cache-control首部字段内的命令。extension tokens仅对能理解他的服务器来说有意义,不能被理解就会直接被忽略。