gpt4 book ai didi

Varnish :Purge 说它有效,但不会删除旧内容

转载 作者:行者123 更新时间:2023-12-03 17:42:37 27 4
gpt4 key购买 nike

我正在 Digital Ocean Ubuntu VM 上运行一个独立的 varnish 实例,它基本上工作正常。该设置用于加载位于其他任何地方的旧 wordpress 服务器。这很有效,但我很难清除内容。在谈论清除时,我的意思是使 URL 的缓存无效以强制 Varnish 从后端获取新版本(只是为了确保我看到了对清除/禁止的一些刺激)。

我已经设置了一个用于清除的 ACL,就我在 varnishlog 中看到的而言,清除被接受 - 一方面来自 WordPress 博客(W3TC 处理清除的地方)以及来自我尝试使用 curl 清除的本地控制台的 es - X PURGE http://url.to.purge

问题是,无论我在本地做什么,我仍然会在浏览器中获得旧版本的 URL。

这就是我在 vcl_recv 中处理清除的方式:

  if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}

我在每次清除时都会收到 VCL_error(200, Purged) 所以我想这可能没问题。

看来我还是做错了。在重新启动服务 Varnish 后,完整的缓存会刷新,页面也会刷新 - 在此之前 Varnish 会保留所有内容 - 无论我清除多少。

我的 Varnish 版本是 4.0.3。

任何的想法?

谢谢,

坦率

最佳答案

使用 vcl 4.1 在 Varnish 6 上获得相同的行为。
解决它的唯一方法是像这样显式定义 sub vcl_purge:

sub vcl_purge {
set req.method = "GET";
set req.http.X-Purger = "Purged";
return (restart);
}

没有找到原因,这可能不是您想要的,因为清除后它将从后端获取内容,而无需等待客户端请求。
但仍然没有找到另一种方式,这对我来说已经足够了。

关于 Varnish :Purge 说它有效,但不会删除旧内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391874/

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