动态内容缓存技术 CSI,SSI,ESI介绍


1.CSI方案

CSI (Client Side Includes)
经过iframe、javascript、ajax 等方式将另一个页面的内容动态包含进来。

2.SSI方案

SSI (Server Side Includes)
Server Side Includes (SSI) is a simple interpreted server-side scripting language used almost exclusively for the Web.
在HTML文件中,能够经过注释行调用的命令或指针。实现整个网站的内容更新。SSI须要特殊的文件后缀(shtml,inc)。如:
<!--#include virtual="../date.jsp" -->

3.ESI方案

ESI (Edge Side Includes)
Edge Side Includes(ESI) 和Server Side Includes(SSI)和功能相似。ESI(Edge Side Include)经过使用简单的标记语言来对那些能够加速和不能加速的网页中的内容片段进行描述,每一个网页都被划分红不一样的小部分分别赋予不一样的缓存控制策略,使Cache服务器能够根据这些策略在将完整的网页发送给用户以前将不一样的小部分动态地组合在一块儿。经过这种控制,能够有效地减小从服务器抓取整个页面的次数,而只用从原服务器中提取少许的不能缓存的片段,所以能够有效下降原服务器的负载,同时提升用户访问的响应时间。
通常用于缓存服务器如varnish、squid。akamai

ESI方案

方案优势

CSI
可以利用浏览器客户端并行处理及装载的机制,这种技术基本不须要服务器支持和修改,计算和操做放在客户端,可以下降服务器端压力。
 
SSI
通用技术,不受具体语言限制,只须要Web服务器或应用服务器支持便可,Ngnix、Apache、IIS、Tomcat、Jboss等对此都有较好的支持。
 
ESI
更适合用于缓存服务器上,缓存整个页面或页面片断,所以ESI特别适合用于缓存。
 

方案缺点

CSI
搜索引擎优化问题。javascript兼容性问题。客户端缓存可能致使服务器端内容更新后不能及时生效,经常经过加js版原本解决。
 
SSI
SSI在语法上不可以直接包含其余服务器的url,只能在当前服务器上运行。
 
ESI
使用不普遍,支持的软件还比较少。

 

SSI经常使用指令

Directive

Parameters

Example

include

file or virtual
<!--#include virtual= menu.cgi  --> 相对 domain root
<!--#include file= footer.html  --> 相对当前文件

echo

var
<!--#echo var="REMOTE_ADDR" -->

If、elif、else、endif

expr
<!--#if expr="${Sec_Nav}" -->
<!--#include virtual="secondary_nav.txt" -->
<!--#elif expr="${Pri_Nav}" -->
<!--#include virtual="primary_nav.txt" -->
<!--#else -->
<!--#include virtual="article.txt" -->
<!--#endif -->
Expr:  支持正则匹配  / 正则 /

set

var, value
<!--#set var="foo" value="bar" -->

ESI经常使用指令

<esi:include src="URI" alt="URI" onerror="continue" />

相关文章
相关标签/搜索