HTTP 中的缓存介绍

发布于 2022-11-13 16:53:57 字数 2244 浏览 114 评论 2

首先,HTTPS 的缓存和 HTTP 的缓存策略是相同的,都是由 HTTP 响应头决定。

Cache-Control

请求头和响应头都可以设定该字段,用于控制缓存链的行为;这是个单向指令,也就是请求和响应头中的 Cache-Control 独立控制请求和响应;不管代理能不能理解这些指令都应该原封不动地传递。 Age 是与之紧密相关的字段,表示响应由源站生成或确认的时间与当前时间的差值。指令如下:

请求

1. max-age

简而言之,指定保质期的指令。 max-age 指令标示了客户端不愿意接收一个 age 大于设定时间的响应。除非还指定了 max-stale ,否则客户端是不会接收过期的响应的。

某些浏览器(比如Firefox)中如果设定为永不缓存,那么其发出的请求中,请求头会包含 max-age=0

2.max-stale

字面意思,能容忍的最大过期时间。 max-stale 指令标示了客户端愿意接收一个已经过期了的响应。如果指定了 max-stale 的值,则最大容忍时间为对应的秒数。如果没有指定,那么说明浏览器愿意接收任何 age 的响应。

暂时没有发现比较常见的使用场景。

3.min-fresh

设定能够容忍的最小新鲜度min-fresh 标示了客户端不愿意接受新鲜度不多于当前的 age 加上 min-fresh 设定的时间之和的响应。

4.no-cache

no-cache 指令标示了缓存链禁止返回一个未经源站验证的缓存响应。

已知的是 Chrome 勾掉 disable cache 之后,所用的请求都会带有这个字段。可惜的是这个指令对于CDN来说,往往没有什么用处,并不会回源,可能是CDN并不认为自己是个代理。

5.no-store

cache禁止存储请求和响应中的任何部分。这个指令被用于 privateshared 的cache中。“禁止存储”在这个上下文中是指cache禁止在非易失存储设备中存储信息,并且必须尽最大努力在转发请求/响应之后移除这些信息。

这个指令并不是一个可靠和有效保证隐私的措施。特别是,恶意的或者妥协的cache并不会识别或者遵守这个指令,并且互联网通信是很可能被窃听。

啊哈,如果运营商啥的遵守这个指令,就不会有信息贩卖这回事了。

6.no-transform

禁止中间人更改payload(请求体)。

7.only-if-cached

只要缓存的内容。 only-if-cached 请求指定指示了客户端指向获取一个缓存的响应。如果接收到这个指定,cache应该要么用缓存的内容给出响应,要么给出一个504(GateWay Timeou)响应码。如果一组cache被作为一个内部相连的系统,那么其中的某个成员可以向这个缓存组里请求响应。

响应

1.must-revalidate

cache在响应不新鲜,必须回源。 must-revalidate 响应指定,一旦内容过期,cache禁止在没有和源站确认情况下,使用响应来返回给后续请求。

这个指令对于支持某些协议的可靠操作是必要的。所有情况下,cache必须遵守这个指令;特别地,如果cache因为某些原因无法到达源站,它必须产生一个504响应。

这个指令当且仅当被服务器用于,如果未能验证一个呈现的请求会导致错误操作的场合,例如一个一个沉默地失败的金融交易。

2.no-cache

禁止返回未被源站验证的内容。这个指令允许源站阻止cache在不回源的情况下响应请求,甚至是在cache设定发送过期响应的情况下。

如果 no-cache 响应指令指定了一个或者多个字段名,那么cache可能会使用这个响应来处理后续请求。然而,任意出现在列表中的头部字段在没有回源的情况下是禁止发给客户端的。

这个指令使得在利用缓存的情况下,也可以使得头部字段有所不同,例如 Set-Cookie 头部。

3.no-store

跟请求头中的no-store一致

4.no-transform

跟请求头中一致

5.public

参考文献 HTTP/1.1 规范 RFC7234

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吲‖鸣 2022-04-29 23:16:43

@mjjde that is, the client wants a response that will still be fresh for at least the specified number of seconds
新鲜度就是“还剩下的保质期”,也就是还有多久资源过期。

夜夜流光相皎洁 2022-04-28 07:40:24

新鲜度指的是什么?

~没有更多了~

关于作者

爱她像谁

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文