【发布时间】:2017-11-27 09:33:05
【问题描述】:
我最近浏览了this 的文章。它表示不仅响应,请求还可以包含cache-control 选项。
虽然我理解,它可以被服务器响应有意义地利用,但我不清楚为什么在请求中需要它们。不幸的是,我在互联网上找不到任何问题的答案。
有人有想法吗?
【问题讨论】:
标签: http httpclient cache-control httpserver http-caching
我最近浏览了this 的文章。它表示不仅响应,请求还可以包含cache-control 选项。
虽然我理解,它可以被服务器响应有意义地利用,但我不清楚为什么在请求中需要它们。不幸的是,我在互联网上找不到任何问题的答案。
有人有想法吗?
【问题讨论】:
标签: http httpclient cache-control httpserver http-caching
HTTP/1.1 缓存和控制缓存行为的相关标头在RFC 7234 中定义。缓存是 HTTP 的一个完全可选的特性。
Cache-Control 标头用于为请求/响应链中的缓存指定指令。这样的缓存指令是
单向,因为请求中存在指令并不意味着在响应中要给出相同的指令。
缓存指令由一个标记标识,以进行比较 不区分大小写,并且有一个可选参数,可以同时使用 标记和带引号的字符串语法。对于下面定义的指令 定义参数,接收者应该接受这两种形式,即使 一个被记录为首选。对于任何未定义的指令 此规范,收件人必须接受这两种形式。
Cache-Control = 1#cache-directive cache-directive = token [ "=" ( token / quoted-string ) ]
在directives 下方查找可用于Cache-Control 标头的请求:
[...]
max-age请求指令表明客户端是 不愿接受年龄大于 指定的秒数。 [...]该指令使用参数语法的标记形式:例如,
max-age=5不是max-age="5"。 [...]
[...]
max-stale请求指令表明客户端是 愿意接受超过新鲜度的回应 寿命。 [...]该指令使用参数语法的标记形式:例如,
max-stale=10不是max-stale="10"。 [...]
[...]
min-fresh请求指令表明客户端是 愿意接受新鲜度不低于 它的当前年龄加上以秒为单位的指定时间。 [...]该指令使用参数语法的标记形式:例如,
min-fresh=20不是min-fresh="20"。 [...]
no-cache请求指令指示缓存不得使用 一个存储的响应来满足请求而不成功 在源服务器上进行验证。
no-store请求指令指示缓存不得 存储此请求的任何部分或对它的任何响应。 [...]
no-transform请求指令指示中介 (无论它是否实现缓存)不得转换 有效载荷 [...]。
only-if-cached请求指令表明客户端只 希望获得存储的响应。 [...]
以类似的方式,RFC 7234 还定义了directives,可用于Cache-Control 标头的响应中。
【讨论】: