On May 12, 2010 1:41pm, Laurence Rowe &lt;l@lrowe.co.uk&gt; wrote:<br />&gt; On 12 May 2010 08:40, Rob Brown dtownrobbrown@gmail.com&gt; wrote:<br />&gt; <br />&gt; &gt;&gt; If we are talking about stuff in the body of the object, the anwer is<br />&gt; <br />&gt; &gt;&gt; no.<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt; yes, unfortunately that is what I am looking for. I am trying to see if<br />&gt; <br />&gt; &gt; varnish can &quot;replicate&quot; the functionality of a commercial cache appliance<br />&gt; <br />&gt; &gt; from a &quot;well-known&quot; vendor.<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt;&gt;<br />&gt; <br />&gt; &gt;&gt; You could always use ESI for it, but apart from that, there&#39;s currently<br />&gt; <br />&gt; &gt;&gt; no way to manipulate the content of a page.<br />&gt; <br />&gt; &gt;<br />&gt; <br />&gt; &gt; ESI would probably work and be much easier, but reading the wiki<br />&gt; <br />&gt; &gt; (http://varnish-cache.org/wiki/ESIfeatures) it seems like Varnish doesn&#39;t<br />&gt; <br />&gt; &gt; yet support the &quot;Content substitution based on variables&quot; functionality.<br />&gt; <br />&gt; &gt; I am not well versed in ESI, but I think would be looking to do something<br />&gt; <br />&gt; &gt; like this:<br />&gt; <br />&gt; &gt; <br />&gt; <br />&gt; &gt;  <br />&gt; &gt; href=&quot;http://www.example.com/getpage?sessionKey=$(QUERY_STRING{&#39;sessionKey&#39;})&quot;/&gt;get<br />&gt; <br />&gt; &gt; page<br />&gt; <br />&gt; &gt; <br />&gt; <br />&gt; &gt; In the wiki, it says &quot;For now we have deemed this feature uninteresting, but<br />&gt; <br />&gt; &gt; adding it is just a matter of programming.&quot; What are the chances of getting<br />&gt; <br />&gt; &gt; support for variables in a future release?<br />&gt; <br />&gt; <br />&gt; <br />&gt; It might be possible to make this work with just ESI includes.<br />&gt; <br />&gt; Assuming that the ESI subrequests reuse the same req object as the<br />&gt; <br />&gt; parent request (I&#39;m not sure about this point), all you need do is<br />&gt; <br />&gt; generate the key as a synthetic response in vcl_error. Something like:<br />&gt; <br />&gt; <br />&gt; <br />&gt; sub vcl_recv {<br />&gt; <br />&gt; if (req.url == &quot;/_esi/sessionKey&quot;) {<br />&gt; <br />&gt; error 701;<br />&gt; <br />&gt; } else {<br />&gt; <br />&gt; set req.http.X-Session-Key = # regexp to extract session key from url<br />&gt; <br />&gt; }<br />&gt; <br />&gt; }<br />&gt; <br />&gt; sub vcl_error {<br />&gt; <br />&gt; if (obj.status == 701) {<br />&gt; <br />&gt; synthetic {<br />&gt; <br />&gt; &quot;http://www.example.com/getpage?sessionKey=&quot;<br />&gt; <br />&gt; req.http.X-Session-Key &quot;%34&gt;get page&quot;<br />&gt; <br />&gt; };<br />&gt; <br />&gt; }<br />&gt; <br />&gt; }<br />&gt; <br />&gt; <br />&gt; <br />&gt; And use in your page:<br />&gt; &lt;esi:include src=&quot;/_esi/sessionKey&quot;/&gt;<br />&gt;<br />&gt; Laurence<br />&gt; <br /><br />That&#39;s pretty cool... Will have to try it!