Varnish: Purge says it works but doesn't remove old content

六月ゝ 毕业季﹏ 提交于 2021-02-07 18:32:13

问题


I'm running a stand alone instance of varnish on a Digital Ocean Ubuntu VM which basically works fine. The setup is used to take load of an older wordpress server that sits anyhwere else. That works quite well but i'm having a hard time getting content purged. And when talking about purge i mean to invalidate the cache for a URL to force varnish to fetch a fresh version from the backend (just to make sure as i've seen some irritation about purge/ban).

I have setup an ACL for purge and as far as i can see with varnishlog the purges get accepted - on one side from the WordPress blog (where W3TC handles the purges) as well es from the local console where i tried to purge with curl -X PURGE http://url.to.purge

The problem is that i still get the old versions of the URL in the browser on matter what i do locally.

This is how i handle purge in vcl_recv:

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

and i get VCL_error(200, Purged) on every purge so i guess it's probably ok.

Looks like i'm still doing things wrong. After giving service varnish a restart the full cache refreshes and the pages refresh too - until then varnish keeps everything for ages - no matter how much i'm purging.

my Varnish version is 4.0.3.

Any idea?

Thanks,

Frank


回答1:


Got same behavior on Varnish 6 with vcl 4.1. The only way to solve it was explicitly define sub vcl_purge like this:

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

Didn't find the reason and this may not be exactly what you want because after purge it will get content from the backend without waiting for client request. But still didn't find another way and this is good enough for me.



来源:https://stackoverflow.com/questions/32391874/varnish-purge-says-it-works-but-doesnt-remove-old-content

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!