概述
平常我们谈到缓存技术,大多是以页面为单位的,比如,新闻网站中将执行后的结果,缓存为一个静态html文件,下次访问时就直接访问这个静态页面了!
减轻了服务器压力!但是,如果一个页面大部分是可静态的,但是有一部分却需要是动态的咋办呢? 这个时候就可以使用动态内容缓存技术!
解决方案
最常见的解决方案有三种: CSI , SSI ,ESI
CSI
CSI实现原来通过iframe、javascript、ajax 等方式将另外一个页面的内容动态包含进来。
SSI
SSI原理是通过SSI调用各模块的对应文件,最后组装为html页面,需要服务器模块支持(常用apache和ngnix)缺点是不能够直接包含其他服务器的url,
只能在当前服务器上运行。
ESI
ESI是通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,
使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个页面的次数,
而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。与SSI不同的是,ESI多在缓存服务器或代理
服务器上执行!
目前最常用的的是CSI和SSI,ESI应用比较少。对于CSI和SSI,CSI由于存在缓存不能及时更新等问题,目前较SSI来说,应用的没有那么多
简单总结下:
应用模式 | 指令模式 | 页面后缀 | |
CSI | 客户端 | 无需指令,ajax/iframe实现 无需服务器支持 | 常见后缀 |
SSI | 服务端 | SSI专用指令需要专用服务器支持 | *.shtml;*.inc或者常见后缀 |
ESI | 服务端 | ESI专用指令 需要专用服务器支持 | 常见后缀 |
参考:http://www.cnblogs.com/wbinblog/archive/2012/05/16/2503528.html