eZ Publish 5 being built on top of Symfony 2, it uses standard HTTP cache headers. By default the Symfony 2 reverse proxy, written in PHP, is used to handle cache, but it can be easily replaced with any other reverse proxy like Varnish.
Provided VCL example is given for Varnish 3.x only
The first thing is to configure Varnish to advertise ESI usage and to activate cache invalidation:
You can of course add additional rules if you need.
Configure eZ Publish
Update your front controller
By default your front controller (
index.php) uses the built-in reverse proxy,
EzPublishCache. In order to use Varnish, you need to deactivate it by commenting the line where
EzPublishCache is instantiated:
Update YML configuration
Et voilà !