页面引入(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]
相关文章
相关标签/搜索