[Wordpress]homepage not purging

Everton Blair everton at windows7news.com
Fri Jul 8 12:23:48 CEST 2011


Hi

I've just started using Varnish with Wordpress/W3TC, and all is ok, apart
from my homepage not purging when an update is made e.g. a new post.  I
think this might be because my homepage is using a static page
www.windows7news.com/magazine-homepage/ as it's homepage and is doing some
magic within Wordpress to show this page when the page
www.windows7news.com/is requested i.e. the server doesn't know that
www.windows7news.com/magazine-homepage/ needs purging.

I seem to have temporariliy managed to fix this by adding:

sub vcl_recv {
       if (req.url ~ "^/") {
               return(pass);
            }
}

But this means my most trafficked page isn't getting cached.  Is there
anyway to tell Varnish to always purge the homepage if there's a change?

Thanks in advance for any help.

My full VCL is below.  If anyone has any Wordpress specific changes they'd
like to share then please send them my way!

Regards

EB

-----------------------------------------------------------------------------------------------------------------------------------

backend b96_30_20_4 {
.host = "96.30.20.4";
.port = "8080";
.probe = {
                .url = "/";
                .interval = 5s;
                .timeout = 1 s;
                .window = 5;
                .threshold = 3;
  }
// we include time outs so uploads don't time out
 .connect_timeout = 600s;
 .first_byte_timeout = 600s;
 .between_bytes_timeout = 600s;
}

backend b96_30_20_5 {
.host = "96.30.20.5";
.port = "8080";
.probe = {
                .url = "/";
                .interval = 5s;
                .timeout = 1 s;
                .window = 5;
                .threshold = 3;
  }
// we include time outs so uploads don't time out
 .connect_timeout = 600s;
 .first_byte_timeout = 600s;
 .between_bytes_timeout = 600s;
}

backend b96_30_20_6 {
.host = "96.30.20.6";
.port = "8080";
.probe = {
                .url = "/";
                .interval = 5s;
                .timeout = 1 s;
                .window = 5;
                .threshold = 3;
  }
// we include time outs so uploads don't time out
 .connect_timeout = 600s;
 .first_byte_timeout = 600s;
 .between_bytes_timeout = 600s;
}

backend b96_30_20_7 {
.host = "96.30.20.7";
.port = "8080";
.probe = {
                .url = "/";
                .interval = 5s;
                .timeout = 1 s;
                .window = 5;
                .threshold = 3;
  }
// we include time outs so uploads don't time out
 .connect_timeout = 600s;
 .first_byte_timeout = 600s;
 .between_bytes_timeout = 600s;
}

backend b96_30_18_15 {
.host = "96.30.18.15";
.port = "8080";
.probe = {
                .url = "/";
                .interval = 5s;
                .timeout = 1 s;
                .window = 5;
                .threshold = 3;
  }
// we include time outs so uploads don't time out
 .connect_timeout = 600s;
 .first_byte_timeout = 600s;
 .between_bytes_timeout = 600s;
}

acl a96_30_20_4 {
"96.30.20.4";
}
acl a96_30_20_5 {
"96.30.20.5";
}
acl a96_30_20_6 {
"96.30.20.6";
}
acl a96_30_20_7 {
"96.30.20.7";
}
acl a96_30_18_15 {
"96.30.18.15";
}

acl purge {
        "96.30.20.4";
 "96.30.20.5";
"96.30.20.6";
"96.30.20.7";
 "96.30.18.15";
}

sub vcl_recv {
if (server.ip ~ a96_30_20_4) {
 set req.backend = b96_30_20_4;
}
if (server.ip ~ a96_30_20_5) {
 set req.backend = b96_30_20_5;
}
if (server.ip ~ a96_30_20_6) {
 set req.backend = b96_30_20_6;
}
if (server.ip ~ a96_30_20_7) {
 set req.backend = b96_30_20_7;
}
if (server.ip ~ a96_30_18_15) {
 set req.backend = b96_30_18_15;
}
}

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purge) {
                        error 405 "Not allowed.";
                }
                return(lookup);
        }
if (req.url ~ "^/") {
               return(pass);
            }
if (req.url ~ "^/forum/$") {
               return(pass);
            }
if (req.url ~ "^/$") {
               unset req.http.cookie;
            }
}
sub vcl_hit {
        if (req.request == "PURGE") {
                set obj.ttl = 0s;
                error 200 "Purged.";
        }
}
sub vcl_miss {
        if (req.request == "PURGE") {
                error 404 "Not in cache.";
        }
if (!(req.url ~ "wp-(login|admin)")) {
                 unset req.http.cookie;
                }
    if (req.url ~
"^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.|)$")
{
       unset req.http.cookie;
       set req.url = regsub(req.url, "\?.$", "");
    }
    if (req.url ~ "^/$") {
       unset req.http.cookie;
    }
}
sub vcl_fetch {
        if (req.url ~ "^/$") {
                unset beresp.http.set-cookie;
        }
if (!(req.url ~ "wp-(login|admin)")) {
                        unset beresp.http.set-cookie;
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20110708/8adb4869/attachment-0002.html>


More information about the varnish-misc mailing list