1、CSI (Client Side Includes)
含义:经过iframe、javascript、ajax 等方式将另一个页面的内容动态包含进来。javascript
原理:整个页面依然能够静态化为html页面,不过在须要动态的地方则经过iframe,javascript或ajax来动态加载!php
例子:<iframe src='http://abroad.e2bo.com/index.php' border='0'></iframe>html
优势:相对比较简单,不须要服务器端作改变和配置;java
缺点:不利于搜索引擎优化(iframe方式), javascript兼容性问题,以及客户端缓存问题可能致使更新后不能及时生效!对于客户体验也不够好!ajax
2、SSI(Server Side Includes)apache
含义:经过注释行SSI命令加载不一样模块,构建为html,实现整个网站的内容更新;跨域
原理:经过SSI调用各模块的对应文件,最后组装为html页面,须要服务器模块支持(具体配置本文不作详述),好比:apache服务器须要开启mod_include模块;缓存
例子:服务器
<!--#include virtual="header.html" -->ide
<!--#include virtual="login.html" -->
<!--#include virtual="footer.html" -->
优势:不受具体语言限制,比较通用,只须要Web服务器或应用服务器支持便可,Ngnix、Apache、IIS等对此都有较好的支持。
缺点:SSI只能在当前服务器上包含加载,不可以直接包含其余服务器上的文件,即不能跨域包含;
3、ESI(Edge Side Includes)
含义及原理:
网上通用的解释以下:经过使用简单的标记语言来对那些能够加速和不能加速的网页中的内容片段进行描述,每一个网页都被划分红不一样的小部分分别赋予不一样的缓存控制 策略,使Cache服务器能够根据这些策略在将完整的网页发送给用户以前将不一样的小部分动态地组合在一块儿。经过这种控制,能够有效地减小从服务器抓取整个页面的次数,而只用从原服务器中提取少许的不能缓存的片段,所以能够有效下降原服务器的负载,同时提升用户访问的响应时间。与SSI不一样的是,ESI多在缓存服务器或代理服务器上执行!
例子:
<html>
<head>
<title>ESI Demo</title>
</head>
<body>
<esi:include src="login.php" />
<div>
<h3>这中间是可静态化html内容</3>
</div>
</body>
<html>
优势:可用于缓存整个页面或页面片断,比较适合用于缓存服务器上;
缺点:目前支持ESI的软件还比较少,官方更新也略显缓慢,所以使用不是很广!
结语,该文章仅仅是总结三个可用于动态内容缓存的方案,具体在项目中用不用,用哪一个,那就须要具体状况具体分析了!
转自:http://hi.baidu.com/huangmeimei86/item/5fff363ddb51fdf6df222152