【发布时间】:2015-11-30 05:56:05
【问题描述】:
我在 Digital Ocean Ubuntu VM 上运行一个独立的 varnish 实例,它基本上可以正常工作。该设置用于加载位于其他任何位置的较旧的 wordpress 服务器。这很好用,但我很难清除内容。在谈论清除时,我的意思是使 URL 的缓存无效,以强制清漆从后端获取新版本(只是为了确保我已经看到了对清除/禁止的一些刺激)。
我已经设置了一个用于清除的 ACL,据我所见,使用 varnishlog 清除被接受 - 一方面来自 WordPress 博客(W3TC 处理清除)以及来自我试图清除的本地控制台使用 curl -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 版本是 4.0.3。
有什么想法吗?
谢谢,
弗兰克
【问题讨论】:
-
您要清除完整的网址吗?有参数什么的?
-
没有参数,是的,我确实清除了确切的 URL。此外,哪个 URL 也没有关系 - 甚至主页也不起作用。 varnishlog 中的条目看起来不错,但实际上内容并没有被清除。
-
奇怪,你试过
ban而不是purge吗?我不知道,它可能有效(禁止我的意思是this) -
您是否尝试使用 curl 代替浏览器来测试这个?可能是您的浏览器正在缓存 url。
-
有人解决了吗?我正在经历同样的事情
标签: varnish varnish-vcl