varnish 2.15 - default set to cache nothing except two urls?

Caunter, Stefan scaunter at topscms.com
Fri Feb 11 15:49:23 CET 2011


It's matching everything, the regex is unanchored.

 

You need

 

if (req.url ~ "^/$"){

 

Stefan Caunter 

Operations

Torstar Digital

m: (416) 561-4871

 

 

From: varnish-misc-bounces at varnish-cache.org
[mailto:varnish-misc-bounces at varnish-cache.org] On Behalf Of Mike Franon
Sent: February-11-11 9:45 AM
To: varnish-misc at varnish-cache.org
Subject: Re: varnish 2.15 - default set to cache nothing except two
urls?

 

Great thanks,

got one more question  If I do this it caches everything,  it never gets
to the else return(pass), the reason I have the if set that way is I
want it to cache the home page but if the client clicks on anything else
once they get to home page, not to cache and send the cookie.  

Thanks again.

:

sub vcl_recv {
if (req.url ~ "/"){
                unset req.http.cookie;
                return(lookup);
}

else {
                return(pass);
}

}
sub vcl_fetch {
    if (req.url ~ "/"){
        set beresp.ttl = 300s;
        set beresp.http.cache-control = "public, max-age = 300";
        set beresp.http.X-CacheReason = "varnishcache";
        unset beresp.http.set-cookie;
        return(deliver);
    }
}






On Fri, Feb 11, 2011 at 9:29 AM, Caunter, Stefan <scaunter at topscms.com>
wrote:

The difference is that in recv it is a "req" from the client. Unsetting
it "strips" the cookie, and makes the request cacheable.

 

In fetch it is indeed "beresp" (back end response), so you are
removing/changing HTTP headers from your web server. I've added a
max-age to control client browser behaviour in the example too.

 

Stefan Caunter 

Operations

Torstar Digital

m: (416) 561-4871

 

 

From: varnish-misc-bounces at varnish-cache.org
[mailto:varnish-misc-bounces at varnish-cache.org] On Behalf Of Mike Franon


Sent: February-10-11 4:51 PM
To: varnish-misc at varnish-cache.org

Subject: Re: varnish 2.15 - default set to cache nothing except two
urls?

 

Thank you for the help!

Quick question:

for this block

if (req.url ~ "/blah"){

                set beresp.ttl = 300s;

                unset req.http.set-cookie;

                set beresp.http.cache-control = "public, max-age = 300";

                set beresp.http.X-CacheReason = "Blah";

                return(deliver);

}

 

 

I thought it was unset beresp.http.set-cookie;

 

Is there a difference?

 

 

Thanks again.

 

On Thu, Feb 10, 2011 at 4:16 PM, Caunter, Stefan <scaunter at topscms.com>
wrote:

You need in vcl_recv:

 

if (req.url ~ "/blah"){

                unset req.http.cookie;

                return(lookup);

}

else {

                return(pass);

}

 

Setting 360s for beresp.ttl gets you 6 minutes J

 

Resetting it to 360 if it goes under 120 seems odd.

 

Use something like this in vcl_fetch:

 

if (req.url ~ "/blah"){

                set beresp.ttl = 300s;

                unset req.http.set-cookie;

                set beresp.http.cache-control = "public, max-age = 300";

                set beresp.http.X-CacheReason = "Blah";

                return(deliver);

}

 

Stefan Caunter 

Operations

Torstar Digital

m: (416) 561-4871

 

 

From: varnish-misc-bounces at varnish-cache.org
[mailto:varnish-misc-bounces at varnish-cache.org] On Behalf Of Mike Franon
Sent: February-10-11 3:51 PM
To: varnish-misc at varnish-cache.org
Subject: varnish 2.15 - default set to cache nothing except two urls?

 

HI,

 

I am fairly new to varnish, and was curious, is there a way to have all
traffic go through varnish to the backend without caching unless for
specific pages.  For example we only want two pages to be cached, our
home, and a specific page under the home as seen below?

 

Here is my default.vcl 

 

Thanks

 

 

 

backend default {

  .host = "127.0.0.1";   

  .port = "80";

}

 

 

sub vcl_recv {

 

    # for the default home page

    if (req.url ~ "^/") {

        unset req.http.cookie;

    }

 

    

   # if they go directly to /samplepage

    if (req.url ~ "^/samplepage") {

        unset req.http.cookie;

    }

 

}

 

sub vcl_fetch {

    if (req.url ~ "^/") {

        unset beresp.http.set-cookie;

    }

    

    if (req.url ~ "^/samplepage") {

        unset beresp.http.set-cookie;

    }

    

    

    #override cache headers from backend to keep element in cache for 5
minutes

    if (beresp.ttl < 120s) {

       set beresp.ttl = 360s;

  }

 

}

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20110211/9437fd9d/attachment-0003.html>


More information about the varnish-misc mailing list