動態緩存技術之CSI,SSI,ESI


平常我們談到網絡緩存技術,大多是以頁面為單位的,比如,新聞網站中將執行后的結果,緩存為一個靜態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的軟件還比較少,官方更新也略顯緩慢,因此使用不是很廣!

 

  結語,該文章僅僅是總結三個可用於動態內容緩存的方案,具體在項目中用不用,用哪個,那就需要具體情況具體分析了!

 

原文地址:http://hi.baidu.com/%D0%A1%BB%C6%BB%C6%C3%C3%C3%C3/blog/item/1471ee3efb7d9fd99e3d6228.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM