May 3, 2011
1 min read time

Varnish 3.0 changes - ESI and gzip

Finally Varnish 3.0 is feature complete and we're about to roll out a beta. All in all we've done quite a lot of testing on this release and the code seems to be quite stable. We've been testing with some rather busy websites and both speed and stability is very good.

I'm working on a document that describes the changes that have occurred in VCL. Whilst working on the document I thought I'd supply a series of short blog post describing each change. So, here is the first change.

ESI and gzip changes.

In Varnish Cache 2.1 you would do ESI-processing on your object by calling "esi" in vcl_fetch. Now, we've introduced a set of boolean flags on the beresp object. In vcl_fetch you can set do_esi if you want your object to be esi-processed. You also have the do_gzip and do_gunzip flags. I guess both are rather self-explanatory. 

ESI and gzip in Varnish Cache 3.0

ESI in Varnish Cache is really, really awesome. The awesome part is that is works with compressed objects - almost without any decompression. 

When an object is processed for ESI it is temporarily decompressed and a list of the referenced fragments is compiled. From now on, when that object is delivered, Varnish only spits out a bunch of compressed fragments. So, the delivery is done without any actual decompression or compression - given that the objects are all stored compressed in Varnish. Cool ehh?