cache-control字段的理解

Cache-Control字段是http报文中的通用首部字段,既存在于请求报文中,也存在于响应报文中。部分字段值是共有的,但是具体的处理也会有差异。

一、共有字段值

共有字段值请求报文中的作用响应报文中的作用
no-cache客户端提醒缓存服务器,在使用缓存前,不管缓存资源是否过期了,都必须进行校验缓存服务器在缓存资源前,必须进行校验,判断是否有效
no-store暗示请求报文中可能含有机密信息,不可缓存暗示响应报文中可能含有机密信息,不可缓存
max-age=[秒]如果缓存资源的缓存时间值小于指定的时间值,则客户端接收缓存资源(如果值为0,缓存服务器通常需要将请求转发给源服务器进行响应,不使用缓存)在指定时间内,缓存服务器不再对资源的有效性进行确认,可以使用
no-transform禁止代理改变实体主体的媒体类型(例如禁止代理压缩图片等)
cache-extension新指令标记(token),如果缓存服务器不能理解,则忽略

 

 

 

 

 

 

 

 

 

 

二、请求报文私有字段值

字段值作用
max-stale(=[秒])提示缓存服务器,即使资源过期也接收;或者过期后的指定时间内,客户端也会接收
min-fresh=[秒]提示缓存服务器,如果资源在指定时间内还没过期,则返回
only-if-cached如果缓存服务器有缓存该资源,则返回,不需要确认有效性。否则返回504网关超时

 

 

 

 

 

 

三、响应报文私有字段值

字段值作用
public明确指明其他用户也可以使用缓存资源
private缓存服务器只给指定的用户返回缓存资源,对于其他用户不返回缓存资源
must-revalidate缓存资源未过期,则返回,否则代理要向源服务器再次验证即将返回的响应缓存是否有效,如果连接不到源服务器,则返回504网关超时
proxy-revalidate所有缓存服务器在客户端请求返回响应之前,再次向源服务器验证缓存有效性
s-maxage=[秒]缓存资源的缓存时间小于指定时间,则可以返回缓存资源,只适用于公共缓存服务器

四、请求报文中的No-cache,no-store,max-age=0的区别

no-cache:不判断缓存资源是否过期,直接将请求发送给源服务器

no-store:不缓存

max-age=0:先要验证ETag/last-modified,判断资源是否有修改(有修改则返回新响应200,没有的修改则返回304)

五、响应报文中的Must-revalidate和proxy-revalidate的区别

前者使用范围主体更广,后者不应用于用户代理的本地缓存,应用在缓存服务器上

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值