V4 VCL roadmappery...

Poul-Henning Kamp phk at phk.freebsd.dk
Sun Apr 7 22:43:12 CEST 2013

> If you get a 304 from origin on a IMS to origin? Where would you end up. 

The bits on this diagram is all on the "client-side" of things.

The places where you see "fetch" we will (mostly) fork another thread
to do the actual fetching. (exception: pass ?)

If we have an expired obj ("exp_obj"), we'll pass that to the thread,
that will enable it to do conditional fetch (will do by default) and
if we get 304 back well stitch the exp_obj's body into the new object.

> And why would you want to return stale from lookup? (I feel like I am
> missing part of the puzzle)

That's basically what "grace" does today, only now we expose that
decision in VCL.

The default.vcl will look something like:

	sub vcl_lookup {
	    if (obj.uncacheable) {
		return (pass);
	    if (obj.ttl >= 0s) {
		return (deliver);
	    if (obj.ttl + obj.grace > 0s) {
		return (stale);
	    return (fetch);

(input very welcome!)

> And is exp-obj the stale object?


Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

More information about the varnish-dev mailing list