Conditional GETs

Dag-Erling Smørgrav des at linpro.no
Sun Jul 29 21:15:47 CEST 2007


Ricardo Newbery <ric at digitalmarbles.com> writes:

> On Jul 29, 2007, at 3:52 AM, Dag-Erling Smørgrav wrote:
>
>> Ricardo Newbery <ric at digitalmarbles.com> writes:
>>> What happens when a client sends a conditional request (either INM or
>>> IMS) and the content is not available in the Varnish cache?  I assume
>>> that Varnish will just relay the original conditional request through
>>> to the backend.
>>
>> No, it will strip the conditional header before requesting the page
>> from
>> the backend.
>
>
> Okay, I think I understand.  So with Varnish in front, using the
> default VCL, there is no set of circumstances that will ever result
> in a conditional request to the backend.  Correct?

Yes.

> But I can still change this behavior with a custom VCL.  Correct?

Yes, by editing bereq in vcl_miss.

> # perpetually refresh my cache
> vcl_timeout {
>         fetch;
> }

This probably won't, but it's on our list for 2.0.

> # if not available in cache, pass client's IMS to backend
> # and pass response back to client without caching
> vcl_miss {
>         if (req.http.If-Modified-Since) {
>                 pass;
>         }
> }

You probably don't want to do that.  It basically opens up a back door,
allowing anyone to bypass Varnish and hit your backend directly just by
including a bogus IMS in their request.

DES
-- 
Dag-Erling Smørgrav
Senior Software Developer
Linpro AS - www.linpro.no



More information about the varnish-misc mailing list