关于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

猜你喜欢

转载自luchuan.iteye.com/blog/1058563
今日推荐