gpt4 book ai didi

php - 如何从 PHP 脚本中禁用 Varnish 缓存?

转载 作者:行者123 更新时间:2023-12-03 17:45:38 24 4
gpt4 key购买 nike

我分发了一个 PHP 脚本,最近很多人在共享主机帐户上遇到 Varnish 缓存问题。

这是 PHP 脚本顶部的代码。但是我仍然在响应 header 中得到“Varnish: 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');

一位托管服务提供商表示,即使通过像上面那样设置缓存 header ,也无法从 PHP 脚本中禁用 Varnish。这似乎..好吧..愚蠢?但似乎符合我的经验。

那么有没有办法从 PHP 中禁用/跳过 Varnish ?还是 Varnish (默认情况下)只是忽略这些由 PHP 设置的缓存 header ?


谢谢 Jens-André Koch - 我将在 PHP 脚本中包含 varnish 指令,以使其忽略无缓存响应:

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

最佳答案

您不能在 PHP 中禁用 Varnish,但是可以使用一个技巧让 Varnish 忽略当前页面。 Varnish 不会缓存您设置 cookie 的页面,因此只要您希望 Varnish 不缓存某个页面,您可以编写这段代码:

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

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

关于php - 如何从 PHP 脚本中禁用 Varnish 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25954657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com