如何从PHP脚本中禁用光油缓存?(How to disable Varnish Cache from

2019-10-21 01:08发布

我分配一个PHP脚本和共享托管帐户清漆缓存最近很多人都遇到了问题。

这是在PHP脚本的顶部的代码。 不过,我仍然得到:在响应头“光油HIT”(和脚本无法正常工作)。

header('Pragma: no-cache');
header('Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate');
header('Expires: Tue, 04 Sep 2012 05:32:29 GMT');

一位托管服务提供商说,这是不可能的,即使通过设置缓存头上面一样从PHP脚本中禁用清漆。 这似乎..好..傻? 但似乎符合我的经验。

那么,有没有办法在PHP中禁用/跳过漆? 抑或是清漆(默认)忽略由PHP设置这些缓存头?


由于斯 - 安德烈·科赫 - 我会包括与PHP脚本一起清漆指示,使其忽略无缓存响应:

sub vcl_fetch {
        if (beresp.http.cache-control ~ "(no-cache|private)" ||
            beresp.http.pragma ~ "no-cache") {
                set beresp.ttl = 0s;
        }
}

Answer 1:

您必须配置光油以避免缓存的页面。 修改您的VCL检测头......指定自己的头关闭缓存为您的文件或静态添加它作为非缓存的配置。

https://www.varnish-software.com/static/book/build/exercises/complete-avoid_caching_a_page.html?highlight=headers



Answer 2:

你不能在PHP中禁用光油但你可以用它来使上光油忽略当前页面一招。 光油不会缓存如果要设置一个cookie的网页,所以每当你想清漆不缓存特定页面,您可以写这篇文章的代码:

setcookie('xx', microtime(true), time()+600, '/');

不是最优化的解决方案,但它工作得很好...



Answer 3:

您可以禁用光油缓存创建具有以下内容的.htaccess文件:

Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate"



Answer 4:

据我了解的情况,你只能做缓存的清除:

https://www.varnish-software.com/static/book/Cache_invalidation.html



文章来源: How to disable Varnish Cache from within a PHP script?
标签: php varnish