Varnish Rules WordPress Multi-Site

Getting your wordpress site to load fast can be a jaunting task. I have been testing out Varnish Cache for the last 2 weeks and found it to pretty effective and pushing our resource forward.

WordPress is crazy CPU and database intense. I have been playing Varnish and have found that there are several key areas that I need to have working.

First one would be our affiliate module at our site. It sets a cookie every time ends up on our network or on a affiliate link.

First rule looks for our affiliate cookie. If it doesn’t exist it passes the connection directly to Nginx. If it does exist it simply remove the cookie. The content at that point is cached so when the user visits the site again the page does not have to be reloaded.

sub vcl_recv {
# This checks to see if the client has the affiliate cookie if not the page is not cached.
if (req.http.Cookie !~ “affiliate”) {
return(pipe);
}

#This one fixs uploading issues I had with larger files.
if (req.request == “POST” && req.http.Cookie ~ “wordpress_logged_in_” )
{
return(pass);
}

#Clipping

remove req.http.cookie;
return (lookup);
}

sub vcl_fetch {
if (req.url ~ “wp-(login|admin)”) {

return (pass);
}

## This line I found to be critical to stop the user getting someone elses cached cookies. 🙂

if (!(req.url ~ “wp-(login|admin)”)) {
unset beresp.http.set-cookie;
}
set beresp.ttl = 24h;
return (deliver);
}

Leave a Reply