Since version 2.1 varnish
support, at least partially, the ESI protocol. ESI is very useful to improve the cache hit ratio because it allow the splitting of uncachable dynamic pages into an ‘heavy’ static page and one or several ‘light’ dynamic page bloc.
Enable ESI support
For Varnish 2.x add into the vcl_recv:
esi;
For Varnish 3.x the syntax is:
set beresp.do_esi = true;
Testing ESI
To test ESI support, you need to create two files. The first will be a simple HTML ‘template’ file. We will call it frontpage.html
:
<html>
<head>
<title>ESI Test Page</title>
</head>
<body>
<p><esi:include src="/backpage.php"/></p>
</body>
</html>
Next we need a file to generate the ‘dynamic’ content. A very simple PHP script like this we be enough:
<?php
echo "ESI is correctly interpreted";
?>
If ESI support is correctly enabled, calling the first page will result into calling the second file as well, displaying the proper “ESI is correctly interpreted” string.