HTTP1.1(十八)复杂的Cache-Control头部

本文详细讲解了HTTP缓存控制头Cache-Control的复杂性,包括其在请求和响应中的不同含义、三种取值类别以及具体选项如max-age、no-cache、no-store的用法。还探讨了在响应中的应用、缓存更新策略以及客户端缓存行为,并提供了案例分析。
摘要由CSDN通过智能技术生成

一  复杂的Cache-Control

上一次课我们讲到'Cache-Control',而Cache-Control的'取值'非常'复杂',本节进行细讲

①  Cache-Control简介

1) 位置:Cache-Control既可以用在'请求[请求头]'中,也可以用在'响应[响应头]'中

2) 含义:而且'同样的值'在请求和响应中'含义'不一样

3) 分类:Cache-Control根据取值分为'三类': 红色、黑色、蓝色

  [1]、红色: '选项'后面跟'=十进制的数字(s)',例如: Cache-Control: max-age=3600 

    备注: 这里的'选项'就是'cache-directive'

  [2]、黑色: '选项'后面不用跟token,直接输入'token',例如: Cache-Control: no-cache

  [3]、蓝色:  表示有'两种用法',涉及'响应中'的'no-cache'和'private'

②  Cache-Control用在请求七个取值的含义

++++++++++ (1)前'三'个'红'色的取值 ++++++++++

核心: 对缓存的进行'复杂'且'精细化'的控制

max-age: 超出之后,'告诉服务器'不要使用自己的缓存,直接去找相应的'源'服务器,获取'原始'的响应

max-stale: 

  [1]、虽然'你服务器缓存'不新鲜了

  [2]、但是过期的'秒数'没有超出我客户端'告诉你'的秒数

  [3]、我客户端'不介意'你的'缓存过期',想让你继续用'服务器的过期缓存'响应给我

min-fresh: 

   [1]、首先你'服务器'的缓存'不能'过期

   [2]、其次至少要'经过min-fresh秒'都'不能过期'的话,才能'给我客户端用'

  

++++++++++ (2)四个'黑色'的取值 ++++++++++ 

0) no-cache

  理解: 除非'我'带'缓存条件',并且'服务端校验成功304',才能使用'服务端'的缓存

1) no-store 

  理解: 告诉'(代理)服务器'你不要对'从源服务器'获取到的响应进行'缓存存储'

  关注: nginx'是否遵守'该规定

2) no-transform 

   细节: 因为有些'代理服务器'会对源服务器的响应的'body'进行转换'修改'

3) only-if-cached 

   特点: 即使'你(代理服务器)自身'没有'缓存',也不要从'源服务器'获取,给我'返回错误'

③  Cache-Control头部在响应中的值

遗留:对于'使用频率不同'的缓存,应该'如何更新'它的缓存时间

④  答疑解惑

疑问:  --> '客户端收到的缓存不是proxy代理缓存服务器发送的'场景

  [1]、请问: response有'带max-age头部'指定浏览器缓存时间

  [2]、但是response'没有回传age头部'的情况下,浏览器会'怎么缓存'这么response呢?

解答: 基于'收到的时间'以及'max-age'来判断'过期与否'

1) 'Ctrl+F5'发出请求时,会在请求头中加入'Cache-Control:no-cache和Pragma:no-cache'

2) F5或'转圈' 发出请求 

 特点:携带'If-Modified-Since 或 If-None-Match'和'Cache-Control: max-age=0'请求头

F5和CTRL+F5请求头

⑤  遗留

RFC 7234 Age和Cache-Control头  RFC9111

nginx的expires指令控制Expires和Cache-Control响应头 

⑥  案例1

1)Cache-Control与'nginx的expires指令'的关系和优先级别

   遗留: nginx的expires指令,为了兼容HTTP1.0和HTTP1.1,会生成两个'对应'的字段

2) 自己遇到过'时钟不同步' --> 'Date' 和'response_time'

+++++++++  缓存新鲜度的案例 -->'时间不同步很常见(5s)'或者'时钟不同步'等,用nginx来模拟

+++++++++  touch强制修改时间(a、m、c)时间 --> 观察缓存 -->内容其实没有发生变化,文件大小

⑦⑧⑨⑩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值