http协议-缓存控制:no-cache/must-revalidate/no-store

客户端从服务器请求数据经历如下基本步骤:
  1、如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy";
  2、检查这个"copy"是否fresh,是则直接返回,否则继续向服务器转发请求。
  3、服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。
  4、客户端更新本地缓存。
  no-cache的作用是:强制客户端跳过步骤2,直接向服务器发送请求。也就是说每次请求都必须向服务器发送。
  must-revalidate:作用与no-cache相同,但更严格,强制意味更明显。但 这只是理论上的描述,根据我在ff6上的测试,它几乎不起作用:只要请求的频率加快到一定程度,服务器就接收不到请求。
  no-store:缓存将不存储response,包括header和body。测试结果表明,除每次请求都必发送到服务器外,响应代码均是200,且request并没有发送"If-Modified-Since"和"If-None-Match"头,这意味着缓存的确没有存储response。
  以上三者都是要求客户端每次请求都必须到服务器进行revalidate,此功能还可以通过max-age实现:
 
Java代码   收藏代码
  1. Cache-Control:max-age=0  
测试结果证明了这一点,每次都请求了服务器,且状态码是304。
 
Java代码   收藏代码
  1. <META HTTP-EQUIV="Cache-control" CONTENT="no-cache"

这种设置方式大部分服务器不支持,额外的解析成本、只支持html文件等原因造成的结果是,它基本上是无效的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值