[转]动态内容的缓存技术 CSI,SSI,ESI

CDN 中动态内容是不太好解决的,通常需要很麻烦的技术和方法来实现这些功能,比如我设计过一种动态缓存的方法,基于 session 栏接,然后根据热点来做动态缓存时间的控制.目前开放的实现 Cache 的技术主要有 CSI,SSI,ESI 之类几种.在一个动态网页中,内容不断更新和变化,但这并不意味不能缓存,其实还是有 90% 的内容都可以做到 CDN 中的.只要花点心思.但这些都对客户有更加高的要需求.下面是这向种技术的介绍.

动态 Cache 页面有如下一些方案:

1、Client Side Includes(CSI):

通过iframe、javascript、ajax 等方式将另外一个页面的内容动态包含进来.这样来实现动态化.

  优点:能够利用浏览器客户端并行处理及装载的机制;这种技术基本不需要服务器支持和修改,计算和操作放在客户端,能够降低服务器端压力

  缺点:搜索引擎优化问题;javascript兼容性问题;客户端缓存可能导致服务器端内容更新后不能及时生效.常常通过加 js version 来解决.

#### 2、Server Side Includes(SSI):

SSI它就是HTML文件中,可以通过注释行调用的命令或指针.实现整个网站的内容更新.SSI需要特殊的文件后缀(shtml,inc).

   优点:SSI技术是通用技术,不受具体语言限制,只需要Web服务器或应用服务器支持即可,Ngnix、Apache、Tomcat、Jboss等对此都有较好的支持,目前 Squid 不支持.

   缺点:SSI在语法上不能够直接包含其他服务器的url,只能在当前服务器上运行.所以通过 CDN 之类的 Cache 时,还是会失效,不灵活.

3、Edge Side Includes (ESI):

    Edge Side Includes(ESI) 和Server Side Includes(SSI)和功能类似.SSI需要特殊的文件后缀(shtml,inc).ESI(Edge Side Include)通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起.通过这种控制,可以有效地减少从服务器抓取整个 页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间.

优点: ESI更适合用于缓存服务器上,缓存整个页面或页面片段,因此ESI特别适合用于缓存,CDN 的第一名的老大,Akamai 全力支持协议.对于布置和 Cache 都是最友好的.

缺点: 出来很久,一直没有多少人使用.会这个技术的程序员不多.

转自: http://www.php-oa.com/2010/08/13/cdn-cache-csi-ssi-esi.html 扶凯

动态内容缓存技术 CSI,SSI,ESI介绍 https://my.oschina.net/coldlemon/blog/341269

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)。如:

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
相对 domain root
相对当前文件
echo

var

If、elif、else、endif

expr







Expr: 支持正则匹配 / 正则 /
set

var, value

ESI常用指令

发表评论

电子邮件地址不会被公开。 必填项已用*标注