Main differences between SSI (Server Side Include) and ESI (Edge Side include)

I need to include dynamic content into static pages at web server level. The 2 options I have found so far are Server Side Include (SSI) and Edge Side Include (ESI).

While the origins of SSI seem old and obscure (that cached page from 95 from University of Illinois seems to be the reference, apparently it's from the NCSA httpd webserver which used to power about 95% of the net), that of ESI seem more recent and rejoicing (w3 specifications from 2001, written mostly by guys from Akamai).

Also, I keep hearing about Varnish+ESI and I'm wondering whether that should therefore be the way to go. However I already have a setup in place with nginx, which only supports SSI, and would like to follow the KISS principle and avoid using Varnish if at all possible.

For my immediate use case, which will be to include a dynamic user bar at the top of each pages, I believe SSI will do the job. However I'm concerned that as my website grows, I will need features only supported by ESI which will force me to re-design everything, which brings me to my question (finally the reader says):

What are the main features not supported by SSI that would make you choose ESI (and vice versa) ?


The tags for SSI and ESI are so similar that I wouldn't worry about this overly much. Varnish only supports the most basic use of ESI anyway.

Use SSI and nginx since you have them, and if you ever need the caching of Varnish, you're only a trivial shell script away from changing your SSIs to ESIs.


Varnish is designed for that, so you will have more options with Varnish to manage cache than with Nginx (even if Nginx has lot of options built-in).

Since Nginx always fit my needs (simple fragment cache, proxy, good speed...) I never try Varnish yet !