昨天晚上在追查一个问题的时候,在firebug中看到这个头“Vary”,以为遇到的问题和这个有关,就G/B了一下,发现能够说清楚的比较少,看了很多篇文章之后,我的解释如下,希望对看到的童鞋有帮助吧:
Vary的格式如下:
Vary = "Vary" ":" ( "*" | 1#field-name )
要么是“*”,要么是header的key名称组合
vary的意义在于告诉代理服务器/缓存/CDN,如何判断请求是否一样,vary中的组合就是服务器/缓存/CDN判断的依据,比如Vary中有User-Agent,那么即使相同的请求,如果用户使用IE打开了一个页面,再用Firefox打开这个页面的时候,CDN/代理会认为是不同的页面,如果Vary中没有User-Agent,那么CDN/代理会认为是相同的页面,直接给用户返回缓存的页面,而不会再去web服务器请求相应的页面。
以上便是我的理解,如有不正确的地方,请大家指正,如果搜http vary的中文页面,很多都是在讲vary对缓存的伤害有多大,但是没有人讲原因,搜http vary的英文页面,基本都是vary本身的解释(rfc),希望这篇文章给G/B后仍不知所云的童鞋一些帮助吧。
rfc:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
分享到:
相关推荐
HTTP协议Header详解是html帮助格式的,方便查询, 通过HTTP协议RFC2616整理的, 目录: 头域定义 2 1 Accept 2 2 Accept-Charset 4 3 Accept-Encoding 5 4 Accept-Language 6 5 Accept-Range 7 6 Age 7 7 Allow 8 8 ...
8. `Vary`:告知代理服务器如何处理不同的请求头。 除了使用浏览器扩展(如 Firebug、Live HTTP Headers)查看 HTTP Headers 外,还可以通过编程方式获取。在 PHP 中,可以使用 `getallheaders()` 获取请求头,`...
HTTP Header 是超文本传输协议(HTTP)中极为关键的一部分,用于在客户端(如浏览器)和服务器之间传递附加信息,这些信息包括请求的细节、响应的状态以及关于数据内容的元信息。HTTP Header 可以帮助优化通信效率,...
### TCP/IP-HTTP-Header-消息报头 在TCP/IP协议族中,HTTP(超文本传输协议)是一种应用层协议,用于从Web服务器传输超文本到本地浏览器的传输协议。HTTP报文由请求行、状态行、首部字段(Header)、空行以及可选的...
大家都知道,nginx配置文件通过使用add_header指令来设置response header。 昨天无聊用curl查看一个站点的信息,发现返回的头部与想象中的不一样: HTTP/2 200 date: Thu, 07 Feb 2019 04:26:38 GMT content-type: ...
在实际开发中,我们可以使用Java语言来设置HTTP响应消息头,例如使用HttpServletResponse对象的setHeader()方法来设置响应消息头。 了解HTTP响应消息头的工作机制和常用的头字段名称,可以帮助我们更好地开发和调试...
在本篇博文中,我们将深入探讨Nginx服务器中gzip压缩、Vary头、预压缩、缓存策略以及反向代理的结合应用。Nginx作为一个高性能的HTTP和反向代理服务器,它提供了多种优化网站性能的方法,这些方法在现代Web开发中至...
在HTTP通信中,头字段(Header Fields)扮演着至关重要的角色,它们提供了请求和响应的上下文信息,以及关于实体(Entity)的元数据。我们将分别探讨这四类头字段的详细内容。 **General Header Fields(通用头)**...
### HTTP协议头字段及分析 #### 一、概述 HTTP(HyperText Transfer Protocol)作为互联网上应用最为广泛的一种网络协议,主要用于规定客户端与服务器之间如何通信。它是一种基于请求与响应模型的应用层协议,用于...
最后,entity-header 字段定义关于 entity-body 的 metainformation(标题字段数据),如果当前没有 body,则定义被 request 确定的资源信息。这些字段提供了关于实体元信息,例如 Allow 字段、Content-Encoding ...
以下是一些常见的HTTP请求头及其详细解释: 1. Accept: 客户端指定它可以接收的数据类型,如text/plain、text/html等。 2. Accept-Charset: 客户端支持的字符编码集,例如iso-8859-5或UTF-8。 3. Accept-Encoding: ...
你可以在这个函数中设置自定义的HTTP头信息。例如: ```javascript $.ajax({ type: "POST", url: "Handler1.ashx", contentType: "application/x-www-form-urlencoded", beforeSend: function (request) { ...
if (isset($header['Vary']) && $header['Vary'] === 'Accept-Encoding') { return true; } return false; } ``` ### 方法2:使用`cURL` 另一种方法是通过`cURL`库获取HTTP响应头。`cURL`允许我们更精细地控制...
// Append "Origin" to the Vary header of the responsevary ( res , 'Origin' )vard.append(标题,字段) 将给定的标头field添加到Vary响应标头字符串header 。 它可以是单个字段的字符串,有效Vary标头的字符串...
通过设置`proxy_pass`指令指定Tomcat的地址,再通过`proxy_set_header`指令传递必要的HTTP头信息,确保Tomcat能够正确地处理这些请求。 #### 五、总结 通过Nginx实现动静分离不仅可以显著提高网站的响应速度和用户...
`proxy_set_header`用于设置请求头,确保后端服务器能正确识别请求来源。 **6. HTTPS与HTTP2** 为了提供更安全和高效的用户体验,推荐使用HTTPS和HTTP2协议。HTTPS可确保数据传输的安全性,HTTP2则提供了更快的资源...
这个配置项定义了客户端请求中较大的消息头的最大数量和大小。调整这个值可以根据实际应用的需求来优化处理能力。 4. **Sendfile** ```nginx sendfile on; ``` 开启高效的文件传输方式,可以显著提高文件传输...
快速浏览您在浏览器中访问的页面的页面SEO因素。... - 移动注释(Rel-alternate-media annotation,Vary HTTP header,AMP HTML注解) - 国际注释(Rel-alternate-hreflang注释) 支持语言:English
Header append Vary User-Agent ``` 在Linux/Unix系统中,可能需要手动编译并安装mod_deflate模块。配置过程类似,但首先需要确保模块已安装。 **IIS服务器的GZIP配置** 对于Microsoft的IIS,GZIP配置步骤相对...
http://php.net/configuration.file ; The syntax of the file is extremely simple. Whitespace and lines ; beginning with a semicolon are silently ignored (as you probably guessed). ; Section headers (e...