今天遇到一个问题,
一个静态页面xx.com/path_x1/a.html部署在xx.com静态集群【browse----->静态集群varnish------>静态集群apache】
另外一个应用又通过apache代理访问xx.com,配置如下
访问的url是 yy.com 【browse----->应用集群apache----->静态集群varnish------>静态集群apache】
运营修改了这个页面,需要立即更新,及希望能通过yy.com看到最新的,于是将 yy.com传入到我们开发的一个varnish清除工具中,结果没效果
后来将xx.com/path_x1/a.html传入也没效果,而且发现yy.com和xx.com/path_x1/a.html返回的居然是两个不同的版本
接下来看看varnish缓存基本原理
- 通常情况下varnish会根据访问的host和url作为key, 但varnish 也提供了callback即配置文件中的vcl_hash,可以定制这个key
- 除此之外还有一个陷阱就是被代理服务器的vary头,通常情况下会返回Vary:Accept-Encoding,varnish会根据浏览器传过来的这个头(Accept-Encoding)的值,为同一个url缓存不同的版本,比如不支持压缩,或者不同类型的压缩(gzip?deflate?...?)
- 可能某些被代理服务器返回的vary头是Vary:Accept-Encoding,User-Agent,那就更悲摧了,版本会更加多
我排查了varnish后端的被代理服务排除了vary这个原因,
然后同过varnishlog仔细比对通过访问yy.com和xx.com/path_x1/a.html时的日志,发现了问题
如果通过xx.com/path_x1/a.html访问,那么varnish识别的host和url分别是xx.com和/path_x1/a.html
如果通过yy.com访问,那么varnish识别的host和url分别是yy.com和/path_x1/a.html ,竟然不是我们通常认为的yy.com和/ ,显然是apache在proxy到varnish时做了变化
按照上面的情况,当然是两个不同的版本
如果要清除yy.com,需要将yy.com/path_x1/a.html传入我们清除工具即可
看来我们的清除工具需要更自智能一些,遇到外站过来的代理,在了解映射规则的前提下智能清除缓存
分享到:
相关推荐
Varnish purges 缓存清除 教程.docx
深入探讨Varnish缓存命中率.docx
在反向代理,web加速方面,varnish已经有足够能力代替squid。挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。 2.作者:Poul-Henning Kamp是FreeBSD的内核开发者之一。
主要介绍了高命中率的varnish缓存配置分享,本文直接给出配置代码,需要的朋友可以参考下
Varnish是一款高性能、开源的反向代理服务器和缓存服务器,其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。
• 如果不提供命令行选项 (-b hostname:port ),则 backend default 部分将指定要连接的服务器。 • 当守护进程收到一个客户机请求时,将调用 vcl...lookup 将尝试在缓存中查找响应,而 insert 将把响应添加到缓存中。
本篇文章是对清空varnish的缓存(包括指定站点下的)进行了详细的分析介绍,需要的朋友参考下
本篇文章是对Linux下Varnish缓存的配置优化进行了详细的分析介绍,需要的朋友参考下
步骤一:从真机给server1代理传一个压缩包 bansys 步骤二:在server1代理服务器上面进行设置 ...域名改为www.westos.org(对这个域名的数据进行缓存清理) vim /etc/httpd/conf/httpd.conf apahce端口为8080 systemctl
主要介绍了centos 7.5 部署varnish缓存服务器功能,文中给大家介绍了varnish的简介和主要特征,需要的朋友可以参考下
我们讨论了把缓存存放在ASP.NET的输出缓存中(内存和硬盘),以及浏览器缓存中,而大型站点的另一种常用做法是将缓存部署在反向代理服务器上,这类缓存我们通常称之为反向代理缓存,比如Squid和Varnish。这两款软件...
Varnish 2.1.2 缓存负载,做反向代理缓存优于squid
主要介绍了php实现监控varnish缓存服务器的状态,Varnish是一款高性能的开源HTTP加速器,可以替代Squid、Nginx等服务器,需要的朋友可以参考下
例如,在eZ Publish中编辑内容时,它将清除相关的Varnish缓存 大图景 该扩展名仅有助于清除清漆缓存。 因此,它期望已配置为使用清漆运行的站点。 换句话说,此扩展将无法处理清漆中缓存的内容以及持续多长时间,但...
varnish-5.2.1.tar.gz 为varnish缓存服务器软件包下载
主要介绍了基于Centos7 部署Varnish缓存代理服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
nginx和php和varnish配置
laravel-varnish, 使 varnish 和 Laravel 在一起很好 使 varnish 和 Laravel 在一起很好 这个包提供了一个简单的方法,可以在 Laravel 中使用 varnish 4 ( 或者 5 ) 。 它提供了路由中间件,在应用到路由时,将确保 ...