vto*_*ola 8 caching http http-caching http-headers
据我所知,HTTP标头Vary指定了一个逗号分隔的HTTP标头列表,在决定请求是否为缓存命中或未命中时,缓存需要将这些标头与URL一起考虑.
如果省略该标头,则表示仅考虑URL.
但是当标题出现时会发生什么Vary:*?
***的变化字段值表示未指定的参数(不限于请求标头(例如,客户端的网络地址))在响应表示的选择中起作用.*值绝不能由代理服务器生成; 它可能只由原始服务器生成.
Vary的头字段值*始终无法匹配,并且该资源上的后续请求只能由源服务器正确解释.
这是否意味着具有此标头的所有请求都将是缓存未命中?
我发现如果您使用它们OutputCacheAttribute,ASP.NET将返回该HTTP标头,如果您不想要标头,或者您想要指定自定义标头,则必须显式禁用该行为,因此我(想)相信它不太可能.
哪个是实用意义Vary:*?
谢谢.
Vary:* 告诉缓存已经根据 HTTP 内容协商的通常方面之外的方面(例如接受、接受语言、接受字符集)选择了响应。
这实际上告诉缓存不要缓存响应。这就是“对该资源的后续请求只能由源服务器正确解释”的含义。缓存必须将这些请求转发到源服务器。
编辑:Vary 与缓存正交。考虑一下:
获取 /foo HTTP/1.1
200 Ok 缓存控制:maxage=60 内容位置:/foo.html 变化:*
Vary:* 告诉缓存无法缓存对 /foo 的请求的响应。但是由于 Content-Location 标头,缓存仍然可以将请求的响应存储到 /foo.html。