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 |
|
<!--#echo var="REMOTE_ADDR" -->
|
If、elif、else、endif |
|
<!--#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 |
|
<!--#set var="foo" value="bar" -->
|
ESI經常使用指令
<esi:include src="URI" alt="URI" onerror="continue" />