2011-09-06 87 views
0

我使用清漆而不触及任何配置(只需将端口转发到Apache到8080)。清漆缓存太多的文件,而不是缓存php

但我有两个问题:

  • 我访问的图像的URL,我删除图像,我再次访问和它的存在......光油缓存......我怎么能告诉漆先来看看如果文件AT LEAST存在,然后从缓存中提供它?

  • PHP文件没有被缓存(我的意思是,PHP生成的HTML内容)。我总是看到标题:年龄:0 ......任何线索?

谢谢!

回答

1

我访问的图像的URL,我删除图像,我再次访问和 它的存在......光油缓存......我怎么能告诉漆先看看 如果文件服务之前,至少存在从他的缓存?

Eh值,高速缓存的整个目的是不必做同样的工作(如检查存在&加载文件,或生成PHP响应)一遍一遍,但再利用所产生的响应。清漆永远不会对一些文件的存在产生新的影响(你的后端服务器做了数学计算),所以它永远不会检查'文件是否至少存在'。

但是,有方法指示清漆永远不会缓存URL。例如;如果您的后端响应指示任何缓存不重用结果(某些HTTP响应标头指明了这一点),varnish将不会缓存它。清漆会非常聪明(默认情况下)不会缓存Cookie响应(这可能会回答您的第二个问题)。你可以告诉清漆只缓存一段时间的响应(如30秒),所以你的删除会很快拾起。在更改/删除文件后,您可以从清漆中清除URL。如果您的后端服务器没有正确地告诉它它的响应头,您可以通过编写自己的.vcl文件来覆盖此行为。

PHP文件没有被缓存(我的意思是,由PHP生成的HTML内容为 )。我总是看到标题:年龄:0 ......任何线索?

我可以猜测:您正在设置Cookie。但是,如果您将回复标题添加到您的问题,这将非常有帮助。