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