动态缓存技术之CSI,SSI,ESI

平时我们谈页面,大都数是以页面为单位的。 
一、CSI (Client Side Includes) 
含义:通过iframe、javascript、ajax等方式将另外一个页面的内容动态包含进来。 
原理:整个页面依然可以静态化为html页面,不过在需要动态的地方则通过iframe,javascript或ajax来动态加载! 
例子: src="http://abroad.e2bo.com/index.php" border="0"> 
优点:相对比较简单,不需要服务器端做改变和配置; 
缺点:不利于搜索引擎优化(iframe方式), javascript兼容性问题,以及客户端缓存问题可能导致更新后不能及时生效!对于客户体验也不够好!

二、SSI(Server Side Includes) 
含义:通过注释行SSI命令加载不同模块,构建为html,实现整个网站的内容更新; 
原理:通过SSI调用各模块的对应文件,最后组装为html页面,需要服务器模块支持(具体配置本文不做详述),比如:apache服务器需要开启mod_include模块; 
例子: 
Html代码 收藏代码

<!--#include virtual="header.html" -->  
<!--#include virtual="login.html" -->  
<!--#include virtual="footer.html" -->  
  • 1
  • 2
  • 3

优点:不受具体语言限制,比较通用,只需要Web服务器或应用服务器支持即可,Ngnix、Apache、IIS等对此都有较好的支持。 
缺点:SSI只能在当前服务器上包含加载,不能够直接包含其他服务器上的文件,即不能跨域包含;

NGINX的SSI用法 
http://wiki.nginx.org/HttpSsiModuleChs

三、ESI(Edge Side Includes) 
含义及原理:通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。与SSI不同的是,ESI多在缓存服务器或代理服务器上执行!

例子: 
Html代码 收藏代码

<html>  
<head><title>ESI Demo</title></head>  
<body>  
<esi:include src="login.php" />  
<div><h3>这中间是可静态化html内容</3></div>  
</body>  
<html>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

优点:可用于缓存整个页面或页面片段,比较适合用于缓存服务器上; 
缺点:目前支持ESI的软件还比较少,官方更新也略显缓慢,因此使用不是很广!

——————— 华丽的分割线 ———————–

ESI的全称是Edge Side Inclue,是一种页面判断缓存的技术。 ESI是一种数据缓冲/缓存服务器,它提供将Web网页的部分(这里指页面的片段)进行缓冲/缓存的技术及服务。由Oracle公司发起的技术规格,

对大型网站来说,网站的页面中存在着部分是静态的内容,部分是动态的内容,比如天气,最新动态等。 网站为了提高性能将静态的内容进行缓存在前端的反向代理服务器上,将ESI指令发送给服务器端,然后再在反向代理服务器进行内容的合并后返回给浏览器。

这里写图片描述

 

ESI的技术方案

笔者通过分析得到如下结果,Varnish,Squid。其中Varnish是免费的,开发源的,而且对于ESI的支持非常的好,是笔者推荐使用的反向代理服务器,性能非常的优秀。

而Squid对ESI的支持有限,当然也可以完成大多数用户的需求。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值