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 !