【计算机网络】HTTP首部

通用首部字段

指的是请求报文和响应报文双方都会使用的首部。

1. Cache-Control

通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制。

指令的参数是可选的,多个指令之间通过“,”分隔。首部字段Cache-Control的指令可用于请求及响应时。

Cache-Control: private, max-age=0, no-cache

  • Cache-Control指令
指令参数说明
no-cache强制向源服务器再次验证
no-store不缓存请求或响应的任何内容
  • 表示是否能缓存的指令

    public指令:当指定使用public指令时,则明确表明其他用户也可利用缓存。

    Cache-Control:public

    public指令:响应只能以特定的用户作为对象,这与public指令的行为相反。
    缓存服务器会对该特定用户提供资源缓存的服务,对于其他用户发送过来的请求,代理服务器则不会返回缓存。

    Cache-Control:private

    no-cache指令:目的是为了防止从缓存中返回过期的资源。
    在客户端发送的请求中,则表示客户端将不会接收缓存过的响应。“中间”的缓存服务器必须把客户端请求转发给源服务器。
    在服务器返回的响应中,表示缓存服务器不能对资源进行缓存。源服务器以后也将不在对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作。

    Cache-Control:no-cache

    由服务器返回的响应中,若报文首部字段Cache-Control中对no-cache字段名具体制定参数值,那么客户端在接收到这个带有指定参数值的首部字段对应的响应报文时,不能使用缓存;反之,首部字段无参数值的可以使用缓存。
    同时,只能在响应指令中指定该参数。

    Cache-Control:no-cache=Location

  • 控制可执行缓存的对象的指令

    no-store指令:该指令暗示请求(和对应的响应)或响应中包含机密信息,。因此,该指令规定缓存不能在本地存储请求或响应的任一部分。

    Cache-Control:no-store

  • 指定缓存期限和认证的指令

    s-maxage指令:和max-age指令功能相同,它们的不同点是s-maxage指令只适用于供多位用户使用的公共缓存服务器。对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用。
    另外,当使用该指令时,则直接忽略对Expires首部字段及max-age指令的处理。

    Cache-Control:s-maxage=604800(单位:秒)

    max-age指令:当客户端发送的请求中包含max-age指令时,判定缓存资源的缓存时间数值比指定时间的数值更小,即缓存还未过期,那么客户端就接收缓存的资源。当指定max-age为0,缓存服务器通常需要将请求转发给源服务器。
    当服务器返回的响应中包含max-age指令时,缓存服务器将不对资源的有效性再做确认,而max-age数值代表资源保存为缓存的最长时间。

    Cache-Control:max-age=604800(单位:秒)

    min-fresh指令:告知缓存者,如果当前时间加上min-fresh的值,超了该缓存的过期时间.则要给我一个新的。(图解HTTP中解释有点晦涩)

    Cache-Control:min-fresh=60(单位:秒)

    max-stale指令:如果未给定参数值,则缓存无论过期多久,客户端都会接受;给定具体参数值时,即使过期了,只要还在max-stale指定的时间范围内,仍被客户端接受。

    Cache-Control:max-stale=3600(单位:秒)

    only-if-cache指令:客户端只在缓存服务器中获取目标资源,不需要确认资源有效性,如果缓存服务器中无目标资源,不会重新加载响应,只返回504 Gateway Timeout

    must-revalidate指令:代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。
    若代理无法连通源服务器再次获取有效资源,缓存必须给客户端返回504(Gateway Timeout)状态码。
    must-revalidate指令会忽略请求的max-stale指令。

    Cache-Control:must-revalidate

    proxy-revalidate指令:要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。

    Cache-Control:proxy-revalidate

    no-transform指令:规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。
    这样做可以防止缓存或代理压缩图片等类似操作。

    Cache-Control:no-transform

  • Cache-Control扩展
    cache-extension token:通过cache-extension标记(token),可以扩展Cache-Control首部字段内的指令。

    Cache-Control:private, community=“UCI”
    // community为扩展字段。

参考:图解HTTP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值