新代码推后的Mod_pagespeed,Varnish和Apachecaching问题

我有一个很奇怪的问题。 在我的环境中,我们正在运行一个负载平衡的8台Apache主机和一台主 – 主MySQL后端。 在Apache的前面,我们在caching层中有Varnish。

我们已经运行Apache mod_pagespeed几个星期了,而且大部分时间它一直在运行。 当我们从Git执行新的代码更新时,和/所有的JS / CSS资产发生变化,问题就出现了。

基本上这个问题似乎有两个方面。 其一,在代码推后,我们通常会借此机会清除清漆,重新启动apache,并重新启动清漆。 在这样做的情况下,所有的mod_pagespeed组合/缩小文件都被清除,确保所有新的JS / CSS资源都是新鲜的。 问题是,这样做的文件名mod_pagespeed创build更改,但旧文件(出现)仍然caching许多人的客户端导致非常意外的结果。 但是,如果我们不重新启动apache,由于caching的缩小资产,文件的更改可能会或可能不会出现在客户端。

简单的解决scheme是禁用mod_pagespeed,但我宁愿不这样做,因为它已经在性能上产生了相当大的影响。

我感觉好像要有一个更好的方法来处理客户端和服务器之间的caching不一致,以防止人们花大价钱去执行大量的页面刷新来查看工作页面。

如果有人需要,我可以提供configuration代码片段。

如果您想检查网站,来源,标题或任何其他内容,请尝试以下地址:

http://wellplayed.org

http://wellplayed.org/tv

提前致谢!

只是为了确保我明白了这个问题,看起来好像你正在修改从varnish上传到mod_pagespeed的文件,并且expire头文件在后台被更改后保持超过caching。

如果是这样的话,你有几个select。 您可以configuration您的后端(varnish)发送较短的过期标题。 或者,您可以将非caching资源configuration为使用修补程序编号链接到caching版本,您可以在进行更改时增加修补程序编号。 所以他们成为:

http://site.com/asset.gif?p=930024982afb191

它也看起来像其他的旋钮,你可以在mod_pagespeed tweek改变某些文件的到期时间:

http://code.google.com/speed/page-speed/docs/filter-cache-extend.html

同样在客户端方面,这里有更多关于如何行动的信息,这将有助于configuration清漆和mod_pagespeed:

http://code.google.com/speed/page-speed/docs/filter-cache-extend.html

你写了关于清漆的问题。 其实有两种不同的方式来做到这一点:

  1. 根据特定的URL和它的变体(通常是不同的语言版本或压缩/未压缩的版本)删除特定的文档(HTML页面,图像,CSS文件或其他) – 这通常被称为清除
  2. 根据正则expression式无效的一组文件(HTML页面,图像,CSS文件或其他) – 这被称为禁令

在你的情况下,禁止所有的HTML,CSS和JS文件可能是一个好主意。

欲了解更多信息,请点击此链接或询问: https : //www.varnish-cache.org/docs/3.0/tutorial/purging.html