平常我们谈到网络缓存技术,大多是以页面为单位的,比如,新闻网站中将执行后的结果,缓存为一个静态html文件,下次访问时就直接访问这个静态页面了! 减轻了服务器压力!但是,如果一个页面大部分是可静态的,但是有一部分却需要是动态的咋办呢? 如下图中画红线处,就需要动态,时时探测用户是否登录!这就可以使用动态内容缓存技术!

动态内容缓存技术,总体来说就是该静态化的静态化,该动态的保持动态,最后进行组合!

可行的方案大致有三种: CSI , SSI ,ESI

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

原理:整个页面依然可以静态化为html页面,不过在需要动态的地方则通过iframe,javascript或ajax来动态加载!

例子:<iframe src='http://abroad.e2bo.com/index.php' border='0'></iframe>

优点:相对比较简单,不需要服务器端做改变和配置;

缺点:不利于搜索引擎优化(iframe方式), javascript兼容性问题,以及客户端缓存问题可能导致更新后不能及时生效!对于客户体验也不够好!

二、SSI(Server Side Includes)

含义:通过注释行SSI命令加载不同模块,构建为html,实现整个网站的内容更新;

原理:通过SSI调用各模块的对应文件,最后组装为html页面,需要服务器模块支持(具体配置本文不做详述),比如:apache服务器需要开启mod_include模块;

例子:

<!--#include virtual="header.html" -->

<!--#include virtual="login.html" -->

<!--#include virtual="footer.html" -->

优点:不受具体语言限制,比较通用,只需要Web服务器或应用服务器支持即可,Ngnix、Apache、IIS等对此都有较好的支持。

缺点:SSI只能在当前服务器上包含加载,不能够直接包含其他服务器上的文件,即不能跨域包含;

三、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的软件还比较少,官方更新也略显缓慢,因此使用不是很广!

结语,该文章仅仅是总结三个可用于动态内容缓存的方案,具体在项目中用不用,用哪个,那就需要具体情况具体分析了

动态缓存技术之CSI,SSI,ESI的更多相关文章

  1. 前端内容缓存技术:CSI,SSI,ESI

    一.CSI (Client Side Includes)   含义:通过iframe.javascript.ajax  等方式将另外一个页面的内容动态包含进来. 原理:整个页面依然可以静态化为html ...

  2. 动态内容的缓存技术:CSI vs SSI vs ESI

    CDN 中动态内容是不太好解决的,通常需要很麻烦的技术和方法来实现这些功能,比如我设计过一种动态缓存的方法,基于 session 栏接,然后根据热点来做动态缓存时间的控制.目前开放的实现 Cache ...

  3. ESI 动态缓存技术

    任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP ...

  4. ESI 动态缓存技术[转载]

    任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP ...

  5. java动态缓存技术:WEB缓存应用(转)

    可以实现不等待,线程自动更新缓存 Java动态缓存jar包请下载. 源代码: CacheData.java 存放缓存数据的Bean /** *  */package com.cari.web.cach ...

  6. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  7. PHP中9大缓存技术总结

    1.全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程.此种方式,在CMS系统中比较常见,比如dedecms: 一种比较常用的实现方 ...

  8. php缓存技术总结

          缓存是指临时文件交换区,电脑把最常用的文件从存储器里提出来临时放在缓存里,就像把工具和材料搬上工作台一样,这样会比用时现去仓库取更方便.因为缓存往往使用的是RAM(断电即掉的非永久储存), ...

  9. PHP中九大缓存技术总结

    PHP缓存包括PHP编译缓存和PHP数据缓存两种.PHP是一种解释型语言,属于边编译边运行的那种.这种运行模式的优点是程序修改很方便,但是运行效率却很低下.PHP编译缓存针对这种情况做改进处理,使得P ...

随机推荐

  1. 【转】JS设计模式开篇

        (原文地址:http://blog.chinaunix.net/uid-26672038-id-3904513.html)     本文主要讲述一下,什么是设计模式(Design patter ...

  2. [Hive - LanguageManual] Sampling

    Sampling Syntax Sampling Bucketized Table Block Sampling Sampling Syntax  抽样语法 Sampling Bucketized T ...

  3. jackson 注解的使用

    在实体对象上添加 @JsonAutoDetect , 表明对该实体对象序列化成json串. @JsonAutoDetect public class User{ private int id; pri ...

  4. Android问题-DelphiXE8安装后编译Android提示SDK无法更新问题(XE10也可以解决)

    资料来原:http://www.chenruixuan.com/archives/479.html (DelphiXE8 更新SDK)http://www.dfwlt.com/forum.php?mo ...

  5. MSGPACK(一)

    MSGPACK跨平台的数据序列规范,为多种语言所支持.用它序列还是还原数据都异常方便. 而且它支持序列的数据格式非常之多,因为它支持的数据格式多,所以MSGPACK的第二功用:缓存. DELPHI的M ...

  6. [iOS UI进阶 - 6.1] 核心动画CoreAnimation

    A.基本知识 1.概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对 ...

  7. delphi读取excel

    简单的例子 procedure TForm1.Button1Click(Sender: TObject); var ExcelApp,MyWorkBook: OLEVariant; begin ope ...

  8. POJ 1511 - Invitation Cards (dijkstra优先队列)

    题目链接:http://poj.org/problem?id=1511 就是求从起点到其他点的最短距离加上其他点到起点的最短距离的和 , 注意路是单向的. 因为点和边很多, 所以用dijkstra优先 ...

  9. 使用 EPPlus,NPOI,操作EXCEL

    NPOI,       读取xls文件(Excel2003及之前的版本)   (NPOI.dll+Ionic.Zip.dll)     http://npoi.codeplex.com/ EPPlus ...

  10. How Much Work Does it Take to be a Successful Mathematician?

    http://mathoverflow.net/questions/9799/how-much-work-does-it-take-to-be-a-successful-mathematician# ...