Second and subsequent ESI includes not cached

JT Justman jt at
Fri May 9 20:47:01 CEST 2008

Hello, Varnish folks! I am currently in the process of testing the ESI 
features of Varnish. I have discovered that if I place more than one 
<esi:inclide> on a document, any includes beyond the first are inserted 
to the cache, but never hit on subsequent requests. I have tried to 
determine if this is caused by something in my configuration but have 
been unable to locate anything. I have distilled my test case down to 
something which ought to be reproducible.

We are running varnish-trunk, latest revision within a week or so.

ESI is being triggered off the filename, for simplicity sake, as such:

sub vcl_fetch {
    remove obj.http.Set-Cookie;

    if (req.url ~ "esi\.html$") {

varnish is being tested by several users on the server simultaneously, 
using different non-privileged usernames and instance names (via -n).

See attached:

1) varnish_esi_case.txt, showing the contents of the source files, 
detailed headers for all objects. Demonstrates that on two subsequent 
requests, the max-age on the second include is not honored

2) varnish_varnishlog_output.txt, showing the output of varnishlog 
(excliding ping/PONG) though a purge, and then both requests to the 
ESI-enabled document.

An observation, which could easily be a mis-correlation: second and 
subsequent requests for esi fragments are logged with an 'XID' of '0'. I 
do not know if this is intentional or perhaps indicative of the 
underlying problem.

Thanks for any insight you can provide!

JT Justman
End Point Corporation
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: varish_esi_case.txt
URL: <>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: varnish_varnishlog_output.txt
URL: <>

More information about the varnish-misc mailing list