頁面引入(include)方式的研究及性能比較
一、 應用Html 中的框架(iframe) php
目前大多數門戶網站都應用iframe來進行頁面上廣告的投放,就是將不一樣的廣告分別應用iframe投放到主頁面上,優勢是效率高,互不影響,缺點是不符合網頁標準的發展趨勢,頁面互不關聯,不適合技術和表現方式的統一部署(例如CSS/JS 等) <iframe src="index.htm"></iframe> 二、 SSI技術 這是在服務端應用頁面包含技術、具備程序語言的特性,可是SSI是爲WEB服務器提供的一套命令,所以優於asp、php等程序語言,目前廣泛應用於大型門戶網站,例如新浪,騰訊等,優勢是維護方便,且適合網站技術的統一部署,符合網頁標準。 SSI中Include命令具備兩個不一樣的參數: Virtual:給出到服務器端某個文檔的虛擬路徑。例如: <!--#include virtual="/includes/header.html " --> File:給出到當前目錄的相對路徑,其中不能使用"../",也不能使用絕對路徑。例如: <!--#include file="header.html " --> 三、 Javascript包含技術 利用JS 的調用特性封裝Html 代碼,缺點是代碼須要客戶端二次解析,增長代碼的容量且每次更新須要從新寫JS 代碼,另外須要注意的是include.js 裏不能再包含<script>和</script>,擴展名隨意,全部內容必須經由 write()、wirteln()、innerHTML、innerText、outerHTML或outerText 輸出顯示。代碼示例: <script src="include.js "></script> 四、 用 download 行爲下載後再用 innerHTML 特性顯示出來 方法: 在主頁面須要引入包含頁面 的地方寫上如下代碼: <span id="demo" src="demo.htm" style="behavior:url(#default#download)"></span> <SCRIPT> function window.onload(){ demo.startDownload(demo.src,fnDownload) //改用document.getElementById } function fnDownload(oSource){ demo.innerHTML=oSource } </SCRIPT> 缺點:兼容性很差 五、 Object(Scriptlets組件)。代碼示例: <object style="border: 0px" type="text/x-scriptlet" data="index.htm" width=400 Height=300></object> 六、 XMLHTTP組件。代碼示例: <script for="window" event="onload"> with(new ActiveXObject("Microsoft.XMLHTTP")){ open("get",demo.src,false,"","") send() demo.innerHTML=ResponseText } </script> <span id="demo" src="demo.htm"></span> 須要注意,目標文件最好以Unicode或UTF-8編碼保存,不然目標文件中的雙字節文字會變成亂碼。固然,能夠用下面的函數把返回的ResponseText處理一下,可是這樣效率比較低,文件較大時不推薦使用。XMLHTTP這種方法也能夠在後臺程序中使用。 <script language=vbscript> function bytes2bstr(vin) strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next bytes2bstr = strreturn end function </script> 這也是Ajax技術應用的一種表現方式 七、 HTC(HTML Component) (1)包含頁代碼。 <span style="behavior:url(index.htc)"></span> (2)被包含頁index.htc的代碼。 <public:attach event="oncontentready" onevent="loadit()" /> <script> function loadit(){ insertAdjacentHTML("afterBegin", include.innerHTML) } </script> <xmp id="include"> 被包含內容 <a href=http://www.163.com>163</a> </xmp> 總結:實際應用中,大多數採用Iframe和SSI方式,可是目前AJAX技術被普遍應用,也是一種很不錯的方法。 性能比較 參考一個頁面,首先用Html 語言編寫一個徹底的頁面進行測試,而後將這個Html 頁面拆散爲幾個部分,用SSI的Include引入進行測試,而且用各類程序語言的包含指令進行測試比較,數據以下: 一、靜態HTML 頁面KeepAlive Requests per second: 1346.50 [#/sec] 二、靜態HTML 頁面無KeepAliveRequests per second: 916.03 [#/sec]三、SSIRequests per second: 507.10 [#/sec]四、Perl寫的普通FastCGIRequests per second: 262.05 [#/sec]五、PHPRequests per second: 180.14 [#/sec]
歡迎關注本站公眾號,獲取更多信息