跳转页面之间的时间计算

loska 2008-12-03 02:33:51
我想利用AJAX计算从A服务器的一个页面,跳转到b服务器某个页,这中间的时间,不是页面加载的时间。

我的ajax部分代码如下

现在就在我标红的ServerGet1Url.asp这个页计算时间,然后RESPONSE回来。但该如何去计算?

pUrl 的参数可以是任何的地址包括错误,正确的都可能。

分不够可以再开。请教各位高手了。

象类似页面写个时间,页尾写个时间,2者相减这些方式是不可取的。
<script language="javascript">

var xmlHttps = new Array(10);
var e;
var EndHtml=false;

//创建XMLHTTP对象
function getXMLHTTPObj()
{
var C = null;
try
{
C = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try
{
C = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(sc)
{
C = null;
}
}

if( !C && typeof XMLHttpRequest != "undefined" )
{
C = new XMLHttpRequest();
}

return C;
}

function GetDetail(sUrl,id)
{

try
{
xmlHttps[id]=false;
xmlHttps[id]= getXMLHTTPObj();
if( xmlHttps[id] )
{
var realUrl = "ServerGet1Url.asp?pUrl=" + sUrl+"&date="+new Date().getTime();
xmlHttps[id].open("GET", realUrl, true);
//设置回调函数
xmlHttps[id].onreadystatechange = function(){updatePage(id,xmlHttps[id])};
//发送请求
xmlHttps[id].send(null);

}
else
{
eval('document.DoSpeedTest.status'+id+'.value="您的浏览器不支持"');
}
}
catch (e)
{
eval('document.DoSpeedTest.status'+id+'.value="测速发生异常"');
}
}

//回调处理函数
function updatePage(id,xmlHttp)
{
var resText;
try {
if (xmlHttp.readyState < 4)
{
eval('document.DoSpeedTest.status'+id+'.value="服务器连接成功,数据获取中..."');
}

if (xmlHttp.readyState == 4)
{

resText=xmlHttp.responseText;

if (resText=="wrong"){
eval('document.DoSpeedTest.status'+id+'.value="站点链接超时"');
}
else
if (resText.length<20)
{
eval('document.DoSpeedTest.status'+id+'.value="反应时间:"+resText');
}
else
{
eval('document.DoSpeedTest.status'+id+'.value="服务器连接过多"');
}
}
}
catch (e)
{
eval('document.DoSpeedTest.status'+id+'.value="测速出错"');
}
}
</script>
...全文
325 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
loska 2008-12-03
  • 打赏
  • 举报
回复
非常感谢大家,这个问题没时间研究了,我换了一个JS的效果实现了.我把我写的帖出来.就此结帖


<SCRIPT>//parent.window.document.getElementById('ftitle').innerHTML="["+''+"]";</SCRIPT>
<TABLE cellSpacing=5 cellPadding=0 width="100%" align=center border=0>
<FORM name=DoSpeedTest>
<TBODY>
<TR>
<TD align=left><P>
<% sql="select * from products where id="&request("id")
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
for i=0 to 3 %>
<FONT style="FONT-SIZE: 9pt">测速网址:</FONT><A
onclick=javascript:window.close();
href="gotourl.asp?url=<%=rs("cpclass"&i+1)%>&id=<%=rs("id")%>"
target=_blank><FONT
style="FONT-SIZE: 12px; FONT-FAMILY: Tahoma"><%=rs("n_name")%> <%=rs("cpclass"&i+1)%></FONT></A><br/><INPUT
type=hidden size=8 value=<%=rs("cpclass"&i+1)%> name=URla<%=i%>> <INPUT
class=input_04 readOnly name=status<%=i%>> <BR>


<% next
else
response.Write "此站点停止测试!"
end if%>
</P></TD></TR></FORM></FORM></TBODY></TABLE>
<SCRIPT language=JavaScript>
<!--
var timecount=1;
var timerstart0;
var bTimer = false;
var timer;

function autotime(h){
if(timecount>150){
for(b=0;b<=h;b++){

if(document.DoSpeedTest["status"+b].value=='测速中...'){eval('document.DoSpeedTest.status'+b+'.value="站点的连接超时"')};
}
}else{
timecount++;
}
}


function CountTime(i,timespace){
if (timespace>100)
{eval('document.DoSpeedTest.status'+i+'.value="站点的连接超时"');}
else
{if(timespace<1)
{eval('document.DoSpeedTest.status'+i+'.value="反应极快"');}
else
{var timestr="反应时间:"+timespace/100*1000+"ms"
eval('document.DoSpeedTest.status'+i+'.value=timestr');}
}
}

function testspeed(url){
timerstart0=timecount;
<%if not rs.eof then
for i=0 to 3 %>
eval('document.DoSpeedTest.status<%=i%>.value="测速中..."');
document.write("<img src='<%=rs("cpclass"&i+1)%>"+Math.random()+"-KYRS-.htm' width=1 height=1 onerror='CountTime(<%=i%>,timecount-timerstart0);'>");

<% next

end if%>

}
timer=setInterval("autotime(3)",100);
testspeed();
-->
</SCRIPT>
IMAGSE 2008-12-03
  • 打赏
  • 举报
回复
友情帮顶~
peacock 2008-12-03
  • 打赏
  • 举报
回复
发起连接 --> 服务器相应 --> 服务器返回信息

我怎么越看越糊涂。。。楼主要那段时间?还是我没把你想要的时间标出来?
loska 2008-12-03
  • 打赏
  • 举报
回复
楼上的大哥 很抱歉 我不是已经说明了不是要算页面加载的时间吗?我还特意把字标红了。

不过还是很感谢您对我的支持。谢谢!
peacock 2008-12-03
  • 打赏
  • 举报
回复
var vTime = 0;
function timeCount()
{
vTime++;
}
setInterval('timeCount()', 1000); //开始计时
xmlHttps[id].open("GET", realUrl, true);
......
if (xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200) {
clearInteval('timeCount()'); //这里停止计时
alert(vTime); //这里的vTime就是页面加载的时间
}
//......
}
loska 2008-12-03
  • 打赏
  • 举报
回复
就是为了 测试网站的反应速度,测试的是从浏览器发起连接到网站服务器发出响应的时间差,大致可以反应出网站的DNS解析加服务器的响应速度。

没人回答》???
loska 2008-12-03
  • 打赏
  • 举报
回复
非常感谢,楼上的帮助。

但是有个问题就是你那个程序只能测试当前站点的情况,而且这个时间也不是很准确。

如果我要测试外部站点与我的站点的时间的话 就测试不了!

可能是我表达不清楚吧。在我那个ajax的基础上,在ServerGet1Url.asp上面如何获得这个时间差!
  • 打赏
  • 举报
回复
<%' *******************************************************************************
'   网络连接速度测试
' *******************************************************************************

T = Request("T")
sub tnet()
%>
<h2>连接带宽测试</h2><a name="K"></a>
<%
if T<>"K" then
%>
<p>[<a href="?T=K">开始测试</a>]</p>
<%
else
haveok=false

if Request("ok") <> "" then haveok=true
if Request("tm") = "" then haveok=false

if haveok=false then
%>
<p>正在测试您与当前服务器之间的连接速度,请稍等...<span id="baifen">.</span></p>
<script language="javascript" type="text/javascript">
var acd1;
acd1 = new Date();
acd1ok=acd1.getTime();
</script>
<%
Response.Flush
for i=1 to 1000
Response.Write "<!--567890#########0#########0#########0#########0#########0#########0#########0#########012345-->" & vbcrlf
if i mod 100=0 then
%>
<script language="javascript" type="text/javascript">
document.getElementById('baifen').innerHTML = '<%=i/10%>%';
</script>
<%
end if
next
%>
<script language="javascript" type="text/javascript">
var acd2;
acd2 = new Date();
acd2ok=acd2.getTime();
window.location = '?T=K&ok=ok&tm=' + (acd2ok-acd1ok)
</script>
<%
Response.Flush :Response.end

else

ttime=clng(Request("tm")) + 1

tnetspeed=100000/(ttime)
tnetspeed2=tnetspeed * 8
twidth=int(tnetspeed * 0.16)+5

if twidth> 300 then twidth=300
tnetspeed=formatnumber(tnetspeed,2,,,0)
tnetspeed2=formatnumber(tnetspeed2,2,,,0)

%><p>测试完成,向客户端传送 100k 字节数据共使用时间 <%=formatnumber(ttime,2)%> 毫秒。[<a href="">重测</a>]
</p>
<table border=0 width=500 cellspacing=1 cellpadding=3>
<tr><td align="center" style="padding:10px 0px">
<table style="margin:0px;border:none" align="center" width="400" border="0" cellspacing=0 cellpadding=0>
<tr><td width="45">| 56k猫</td><td width="160">| 2M ADSL</td><td width=200>| 10M LAN</td></tr>
</table>
<table style="margin:0px" class="input" align="center" width="400" border="0" cellspacing=0 cellpadding=0>
<tr class="input"><td width="<%=twidth%>" class="backs"></td><td width="<%=400-twidth%>"> <%=tnetspeed%> kB/s</td></tr>
</table>
<p style="margin:10px 0px 0px 0px">您与此服务器的连接速度是 <%=tnetspeed%> kB/s (相当于<%=tnetspeed2%>kbps)
<br><font color="#888888">换算关系: 1 Byte(字节) = 8 bit(位)</font></p>
</td></tr>
</table>
<%

end if
end if
end sub%>

call tnet()%>
loska 2008-12-03
  • 打赏
  • 举报
回复
补充一点:a,b页都不在一个站点内。!

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧