Surrogate-Capability Header

Andrew McNaughton andrew at
Mon Dec 29 13:33:54 CET 2008

I'm currently writing an extension to perl's HTML::Mason code to support
ESI.  I'd like to allow page construction to happen at either the origin
server or the Surrogate without change to the code on the origin.

In the Edge Architecture Spec (EAS), there's mention of a
Surrogate-Capability Header which "allows surrogates to advertise their
capabilities with capability tokens".  I'd like to use this, or
something like this, to trigger the code on the origin server to decide
whether to issue esi:include tags and have the pages constructed at the
edge, or to construct the pages fully at the origin. 

vcl can do what I need, but I wonder what people think would be the best
way to advertise the ESI capabilty, and whether there's any interest in
doing this in varnish itself.  Even just a Varnish version number in the
request headers would be useful and would allow my code to require that
little bit less external configuration for it to work.  Advertising
"ESI/1.0" in the Surrogate-Capability Header is problematic in that only
part of that spec is supported.  Perhaps Varnish should use it's own
token here, or perhaps it should just issue a separate header saying
that varnish is running and what version.

Any thoughts?

Andrew McNaughton

More information about the varnish-misc mailing list