SSI(Server Side Include)这个现在大部分的Web服务器都支持,可以在页面中使用来替代原来个性化的部分,然后在Web服务器上就会去寻找这个.shtml文件,将它与页面合成。不过这有一个问题,ssi只能将静态文件与页面合成,这样对于做页面输出缓存意义并不大。
ESI(Edge Side Include)正是为了应付这种场合而出现的,它可以使用类似XML语法,在页面合成过程中调用一个动态页面,将动态页面的内容与现有网页合成。这样一来就可以将某个用户的个性化信息与缓存的页面文件合成了。ESI大的问题就是现有Web服务器对此支持度不高。Nginx需要将第三方模块编译进来来支持ESI,代理缓存服务器中Varnish原生支持ESI。
CSI(Client Side Include)或者叫做Browser Side Include,就是在用户浏览器端将个性化信息与非个性化信息合成。说白了就是用ajax异步获取个性化信息,或者直接使用iframe显示个性化信息。实际上这个合成的过程越靠近用户浏览器端越好,这样就可以一直从Web服务器到代理服务器的缓存到CDN都可以用到这些完全相同的页面做缓存。但是使用ajax等方式有一些问题,就是对于不支持或者不开启的JavaScript的浏览器来说就不能正常访问页面了,现在很多网站都要考虑到手机客户端,其中不支持JavaScript的占大多数。并且大量使用ajax的话对用户浏览器来说也是一种负担,并且会造成页面加载很“卡顿”的感觉。