blob: cef4e18bb8b52b85386a52eeb66f4a83eca61eb4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
---
title: Vary
slug: Web/HTTP/Headers/Vary
translation_of: Web/HTTP/Headers/Vary
---
<div>{{HTTPSidebar}}</div>
<p><strong><code>Vary</code></strong> 是一个HTTP响应头部信息,它决定了对于未来的一个请求头,应该用一个缓存的回复(response)还是向源服务器请求一个新的回复。它被服务器用来表明在 <a href="/en-US/docs/Web/HTTP/Content_negotiation">content negotiation</a> algorithm(内容协商算法)中选择一个资源代表的时候应该使用哪些头部信息(headers).</p>
<p>在响应状态码为 {{HTTPStatus("304")}} <code>Not Modified</code> 的响应中,也要设置 Vary 首部,而且要与相应的 {{HTTPStatus("200")}} <code>OK</code> 响应设置得一模一样。</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Header type</th>
<td>{{Glossary("Response header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>no</td>
</tr>
</tbody>
</table>
<h2 id="语法">语法</h2>
<pre class="syntaxbox notranslate">Vary: *
Vary: <header-name>, <header-name>, ...
</pre>
<h2 id="说明">说明</h2>
<dl>
<dt>*</dt>
<dd>所有的请求都被视为唯一并且非缓存的,使用{{HTTPHeader("Cache-Control")}}<code>: no-store</code>,来实现则更适用,这样用于说明不存储该对象更加清晰。</dd>
<dt><header-name></dt>
<dd> 逗号分隔的一系列http头部名称,用于确定缓存是否可用。</dd>
</dl>
<h2 id="例子">例子</h2>
<h3 id="动态服务">动态服务</h3>
<p><code><font face="Open Sans, arial, sans-serif">哪种情况下使用 </font>Vary: 对于User-Agent</code> 头部信息,例如你提供给移动端的内容是不同的,可用防止你客户端误使用了用于桌面端的缓存。 并可帮助Google和其他搜索引擎来发现你的移动端版本的页面,同时告知他们不需要<a href="https://en.wikipedia.org/wiki/Cloaking">Cloaking</a>。</p>
<pre class="notranslate">Vary: User-Agent</pre>
<h2 id="定义">定义</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">版本</th>
<th scope="col">标题</th>
</tr>
<tr>
<td>{{RFC("7231", "Vary", "7.1.4")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p>{{Compat("http.headers.Vary")}}</p>
<h2 id="更多关于浏览器兼容性:">更多关于浏览器兼容性:</h2>
<ul>
<li><a href="https://blogs.msdn.microsoft.com/ieinternals/2009/06/17/vary-with-care/">Vary with care – Vary header problems in IE6-9</a></li>
</ul>
<h2 id="更多">更多</h2>
<ul>
<li>{{HTTPHeader("Cache-Control")}}</li>
<li>{{HTTPHeader("User-Agent")}}</li>
<li><a href="https://www.fastly.com/blog/best-practices-for-using-the-vary-header">Best Practices for Using the Vary Header – fastly.com</a></li>
</ul>
|