Varnish: 清理说,它的工作,但不删除旧内容。

问题描述 投票:3回答:1

我在数字海洋Ubuntu虚拟机上运行一个独立的varnish实例,基本上工作正常。这个设置是用来承担一个旧的wordpress服务器的负载,这个服务器位于其他任何地方。这工作相当不错,但我很难让内容被清除。当谈到清除时,我的意思是使一个URL的缓存无效,以迫使Varnish从后端获取一个新鲜的版本(只是为了确保,因为我已经看到了一些关于purgeban的刺激)。

我已经为清除设置了一个ACL,而且就我所看到的情况而言,使用varnishlog,清除是被接受的--一边是WordPress博客(W3TC处理清除的地方),一边是本地控制台,在那里我试着用curl -X PURGE清除。http:/url.to.purge

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

这是我在vcl_recv.中处理清除的方法,我在每次清除时都得到VCL_error(200, Purged),所以我想大概可以了。

  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。

我的Varnish版本是4.0.3。

谢谢。

弗兰克

varnish varnish-vcl
1个回答
0
投票

在Varnish 6与vcl 4.1上得到了同样的行为。唯一的解决方法是明确定义子vcl_purge这样。

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

我没有找到原因,这可能不是你想要的 因为在清除之后,它将从后台获取内容,而不需要等待客户端的请求。但还是没有找到其他方法,这个对我来说已经很好了。

© www.soinside.com 2019 - 2024. All rights reserved.