I'm testing the CVS version with ESI (very promising work indeed, thanks for that!), but I'm running through an troublesome issue: I expected ESI resources to be cached by Squid as any other ones (what would be the point if that wasn't the case?), but all my tests are failing with cache miss all over the place.
On http://www.esi.org/architecture_spec_1-0.html I read that ESI processors should disregard the Cache-Control headers and rely on Surrogate-Control instead (does that stand true for included resources as well?). I did a quick setup with a stock Apache configured as follows:
<Directory /esi/>
Header add Surrogate-Control max-age=60,content="ESI/1.0"
ExpiresActive On
ExpiresByType text/html "now plus 1 minutes"
</Directory>Which sends, as expected, what seems to me a proper Surrogate-Control header. The ESI processor works just fine on this very simple test:
<html xmlns:esi="http://www.edge-delivery.org/esi/1.0"> <head> <title>ESI Test</title> </head> <body> <p>The following content should be pulled automagically.</p> <esi:try> <esi:attempt> <esi:include src="http://localhost/esi/included.html"/> </esi:attempt> <esi:except> Unable to retrieve content. </esi:except> </esi:try> </body> </html>
With the only (notable) exception that, despite the "max-age" given in the headers, all I get are cache misses from Squid and, from my web server logs, hits to both resources (the above page and esi/included.html) for each squid request. Given also that processing time with ESI is quite huge (average of 450ms for the above setup), not being able to cache the results might be a serious showstopper. Have I overlooked something?
Thanks in advance,
-- Gianugo Rabellino Pro-netics s.r.l. - http://www.pro-netics.com Orixo, the XML business alliance - http://www.orixo.com (Now blogging at: http://blogs.cocoondev.org/gianugo/)
