how can I make varnish to just cache but don't deliver?

Pahud pahudnet at gmail.com
Tue Jul 6 12:23:15 CEST 2010


I tried varnishd (varnish-2.1.2 SVN 4769:4772) on Gentoo Linux today. And
the VCL compilation failed:

Message from VCC-compiler:
Variable 'obj.http.X-Cache-Only' not accessible in method 'vcl_fetch'.
At: (input Line 106 Pos 21)
                set obj.http.X-Cache-Only = "true";
--------------------#####################----------
Running VCC-compiler failed, exit 1
VCL compilation failed

I also tried
set resp.http.X-Cache-Only = "true";
but still failed.

:(

pahud


On Mon, Jul 5, 2010 at 10:49 PM, Pahud <pahudnet at gmail.com> wrote:

> Thanks for your quick reply. I tried your config and varnish started with
> no error but if I send http request in this case, varnish will have empty
> response. And if I comment off the vcl_deliver it responds as normal.  Can
> you help me a little bit more? Thanks again.
>
> pahud
>
>
>
>
>
>
> On Mon, Jul 5, 2010 at 10:11 PM, Kristian Lyngstøl <
> kristian at varnish-software.com> wrote:
>
>> On Mon, Jul 5, 2010 at 3:17 PM, Pahud <pahudnet at gmail.com> wrote:
>> > vcl_deliver(). So I tried this configuration
>> > sub vcl_deliver {
>> >          if (req.http.Cache-Control ~ "just-cache") {
>> >                error 200 "Cached";
>> >                return (pass);
>>
>> return (pass); doesn't work from vcl_deliver, nor is it needed after
>> an error-statement.
>>
>> >          }
>> >     return (deliver);
>> > }
>> > But no good luck. I guess vcl_deliver just can't get the value of
>> >  req.http.Cache-Control.
>> > Is it still possible to achieve this just with VCL?
>>
>> Hmm. What you could do is:
>>
>> In vcl_fetch: if (req.http.Cache-Control ~ "just-cache") { set
>> obj.http.X-Cache-Only = "true"; }
>> In vcl_deliver:
>>
>> if (resp.http.X-Cache-Only == "true") {
>>    if (obj.hits == 0) {
>>        error 795 "Cached";
>>    } else {
>>        remove resp.http.X-Cache-Only;
>>    }
>> }
>>
>> I used the error code 795 to differentiate from 200, so you can catch
>> it in vcl_error and strip most of the content of the error message if
>> you want to. You may use whatever error code you want, of course.
>>
>> (I haven't tested this, but I don't see why it shouldn't work, except
>> perhaps syntax typos).
>>
>> - Kristian
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.varnish-cache.org/pipermail/varnish-misc/attachments/20100706/e7f01081/attachment.html>


More information about the varnish-misc mailing list