On Fri, Dec 02, 2011 at 02:50:04PM -0500, AD wrote:
> hello,
> 
>  How does per_call know what to cache on in the vmod?  Is it based on the
> parameters to the function or based on the request in the VCL?  I have run
> some tests previously where i make multiple http requests with different
> URLs and priv_call returns the same cached response.
> 
>  Looking at this page
> https://www.varnish-cache.org/trac/wiki/ArchitectureVmodStorage it seems if
> i call a function in a vmod with priv_call with different parameters i
> should be able to cache them independently.  How is this supposed to work?

It is cached... per occurrence in VCL.

Meaning: For the same call, you will get the same private data
regardless of input. It's up to you whether the vmod needs to take the
parameters into account.

A good example of why this makes sense can be found in the header
vmod[1]. It has functions that take multiple arguments, but the first is
a regular expression. The regular expression is expected (required) to
be static. In other words: You write the regular expression by hand, but
the headers it are of course variable. The vmod can use per_call storage
to store the compiled regular expression, since the regex never changes.

Or:

sub vcl_recv {
        somevmod.foo("blatti");
        somevmod.foo("blatti");
        somevmod.foo("blatti");
        somevmod.foo(req.http.someheader);
}

will get exactly 4 priv_vcl structures, regardless of the value of
req.http.someheader.

https://github.com/varnish/libvmod-header

- Kristian

_______________________________________________
varnish-misc mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to