HTTP1.1(十九)什么样的响应才会被缓存

文章探讨了HTTP响应被缓存的条件,主要关注Cache-Control的不同取值,如no-cache和no-store的区别。它强调了URL和方法的一致性对于命中缓存的重要性,并介绍了Vary响应头在缓存匹配中的作用。此外,文章还讨论了如何针对不同更新频率的资源进行缓存策略调整,例如HTML、JS和CSS的处理方式。
摘要由CSDN通过智能技术生成

一   什么样的响应才会被缓存

本节'讨论'重点: 

  1) 基于'Cache-Control'的各种'取值'方式,来'讨论'什么样的响应会'被缓存'?

  2) 使用'本地已经缓存好上次响应的条件'是什么?

MDN的Cache

①  使用缓存分两步

使用缓存'分两步':

   1) 客户端先把'响应'缓存下来   --> '保存'

   2) 客户端将要'发起'请求的时候,'检查'当前请求'是否'能够使用已经缓存的响应 --> '检查'

②  什么样的HTTP响应会被缓存

通俗: 浏览器通过'哪些动动(信息)'来判断要缓存'响应的内容'

python示例代码

③  其它响应头部

1) Pragma: no-cache '跟' Cache-Control: no-cache '含义'相同

2) Pragma: no-cache'兼容'http 1.0,Cache-Control: no-cache是'http 1.1'提供的

++++++++++  "Expires"和"Cache-Control"区别  ++++++++++

  

nginx设置expires指令不同的值Expires、Cache-Control、Pragma响应头的取值

④  使用缓存作为当前请求响应的条件

遗留: 多个'条件'同时满足,怎么决策?

重点: 虽然我们已经'有了缓存',但是想使用这些缓存是'有条件'的

通俗: 如何才能'命中hit'缓存

1) 'url'和'method'必须和'之前的请求'一致

漫谈:HTTP网络协议中Vary响应头  HTTP请求的响应头部Vary的理解

++++++++  'no-cache'和'no-store'区别 ++++++++ 

1) Cache-Control: no-cache'误解',使人误以为是'响应不被缓存'

2) 实际上Cache-Control: no-cache是会'被缓存'的

  特点: 只不过每次在'向客户端(浏览器)'提供响应数据时,缓存都要向服务器评估'缓存响应'的有效性

  通俗: 我虽然'本地缓存'了,但是我'持怀疑态度',每次都要向'服务器'确认本地缓存的'有效性'

  补充: 每次都会'发起网络请求',如果缓存'没过期(预估时间)',则收到'304'使用本地缓存

3) Cache-Control: no-store: 这个才是响应'不被缓存'的意思

⑤  Vary响应头

Vary在'nginx'典型应用: '压缩',以及'nginx缓存'; Vary 做'更复杂'的缓存匹配的事情

nginx proxy模块对上游Vary响应头处理   gzip模块的gzip_vary指令   理解Vary

Content-Encoding与Accept-Encoding   HTTP 协议中的Content-Encoding

⑥  如何缓存更新频率不同的资源

核心: 如何缓存'更新不同频率'的'资源(resources)'

说明: 以'百度'为例'讲解'

++++++++++++  "分割线"

1) html'经常'会发生变化 ; jss和css一般'不会'发生变化,

潜在问题: 'html'设置不合适或者太长的过期时间,导致用户获取到'非预期'的过期资源

2) 解决'策略'

 [1]、html'后缀'的文件设置'不允许'缓存,或者设置'非常短'的时间

 [2]、html中通过'版本号'引用js和css,'url带版本'

   备注: 'v1'版本虽然被缓存了也'没关系',因为'html'引用v2,我现在不用v1了,用'v2'

⑦  Warning 了解

  

eg: 当响应中没有'明显指出过期时间'的时候,会加上'113'

哪点: 客户端是否能'识别出'

⑧  验证请求和响应

⑨  答疑解惑

说明: 一般我们自己搭建'梯子','客户端'和'代理服务器'在一台机器上

思考:由'上游设置'缓存时效还是'nginx中间代理'设置缓存时效?

 1) 忽略上游的'Cache-Control相关响应头',自定义'add_header'响应头  --> "nginx控制"

 2) nginx不做'任何操作'  --> "后端控制"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值