`

关于HTTP头(header)的Vary的解释

阅读更多

昨天晚上在追查一个问题的时候,在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

3
1
分享到:
评论
1 楼 invetation 2012-10-23  
谢谢分享。

相关推荐

    HTTP协议Header详解.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 ...

    http header 详解

    8. `Vary`:告知代理服务器如何处理不同的请求头。 除了使用浏览器扩展(如 Firebug、Live HTTP Headers)查看 HTTP Headers 外,还可以通过编程方式获取。在 PHP 中,可以使用 `getallheaders()` 获取请求头,`...

    HTTP_Header_详解.doc

    HTTP Header 是超文本传输协议(HTTP)中极为关键的一部分,用于在客户端(如浏览器)和服务器之间传递附加信息,这些信息包括请求的细节、响应的状态以及关于数据内容的元信息。HTTP Header 可以帮助优化通信效率,...

    tcp/ip-HTTP-Header-消息报头

    ### TCP/IP-HTTP-Header-消息报头 在TCP/IP协议族中,HTTP(超文本传输协议)是一种应用层协议,用于从Web服务器传输超文本到本地浏览器的传输协议。HTTP报文由请求行、状态行、首部字段(Header)、空行以及可选的...

    为何要小心Nginx的add_header指令详解

    大家都知道,nginx配置文件通过使用add_header指令来设置response header。 昨天无聊用curl查看一个站点的信息,发现返回的头部与想象中的不一样: HTTP/2 200 date: Thu, 07 Feb 2019 04:26:38 GMT content-type: ...

    JavaWeb开发技术-HTTP响应消息 HTTP响应头.pptx

    在实际开发中,我们可以使用Java语言来设置HTTP响应消息头,例如使用HttpServletResponse对象的setHeader()方法来设置响应消息头。 了解HTTP响应消息头的工作机制和常用的头字段名称,可以帮助我们更好地开发和调试...

    nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    在本篇博文中,我们将深入探讨Nginx服务器中gzip压缩、Vary头、预压缩、缓存策略以及反向代理的结合应用。Nginx作为一个高性能的HTTP和反向代理服务器,它提供了多种优化网站性能的方法,这些方法在现代Web开发中至...

    HTTP 协议 解析

    在HTTP通信中,头字段(Header Fields)扮演着至关重要的角色,它们提供了请求和响应的上下文信息,以及关于实体(Entity)的元数据。我们将分别探讨这四类头字段的详细内容。 **General Header Fields(通用头)**...

    HTTP协议头字段及分析

    ### HTTP协议头字段及分析 #### 一、概述 HTTP(HyperText Transfer Protocol)作为互联网上应用最为广泛的一种网络协议,主要用于规定客户端与服务器之间如何通信。它是一种基于请求与响应模型的应用层协议,用于...

    HTTP 请求报头详解

    最后,entity-header 字段定义关于 entity-body 的 metainformation(标题字段数据),如果当前没有 body,则定义被 request 确定的资源信息。这些字段提供了关于实体元信息,例如 Allow 字段、Content-Encoding ...

    HTTP常见请求和响应头说明1

    以下是一些常见的HTTP请求头及其详细解释: 1. Accept: 客户端指定它可以接收的数据类型,如text/plain、text/html等。 2. Accept-Charset: 客户端支持的字符编码集,例如iso-8859-5或UTF-8。 3. Accept-Encoding: ...

    js 使用ajax设置和获取自定义header信息的方法小结

    你可以在这个函数中设置自定义的HTTP头信息。例如: ```javascript $.ajax({ type: "POST", url: "Handler1.ashx", contentType: "application/x-www-form-urlencoded", beforeSend: function (request) { ...

    php 判断页面或图片是否经过gzip压缩的方法

    if (isset($header['Vary']) && $header['Vary'] === 'Accept-Encoding') { return true; } return false; } ``` ### 方法2:使用`cURL` 另一种方法是通过`cURL`库获取HTTP响应头。`cURL`允许我们更精细地控制...

    Blog-Website-with-database

    // Append "Origin" to the Vary header of the responsevary ( res , 'Origin' )vard.append(标题,字段) 将给定的标头field添加到Vary响应标头字符串header 。 它可以是单个字段的字符串,有效Vary标头的字符串...

    nginx动静分离

    通过设置`proxy_pass`指令指定Tomcat的地址,再通过`proxy_set_header`指令传递必要的HTTP头信息,确保Tomcat能够正确地处理这些请求。 #### 五、总结 通过Nginx实现动静分离不仅可以显著提高网站的响应速度和用户...

    vue Web部署.docx

    `proxy_set_header`用于设置请求头,确保后端服务器能正确识别请求来源。 **6. HTTPS与HTTP2** 为了提供更安全和高效的用户体验,推荐使用HTTPS和HTTP2协议。HTTPS可确保数据传输的安全性,HTTP2则提供了更快的资源...

    nginx安装优化

    这个配置项定义了客户端请求中较大的消息头的最大数量和大小。调整这个值可以根据实际应用的需求来优化处理能力。 4. **Sendfile** ```nginx sendfile on; ``` 开启高效的文件传输方式,可以显著提高文件传输...

    SEO Peek-crx插件

    快速浏览您在浏览器中访问的页面的页面SEO因素。... - 移动注释(Rel-alternate-media annotation,Vary HTTP header,AMP HTML注解) - 国际注释(Rel-alternate-hreflang注释) 支持语言:English

    tomcat,apache,iis的GZIP配置

    Header append Vary User-Agent ``` 在Linux/Unix系统中,可能需要手动编译并安装mod_deflate模块。配置过程类似,但首先需要确保模块已安装。 **IIS服务器的GZIP配置** 对于Microsoft的IIS,GZIP配置步骤相对...

    php.ini-development

    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...

Global site tag (gtag.js) - Google Analytics