跳转页面之间的时间计算

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>
...全文
335 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页都不在一个站点内。!
本PDF电子书包含上下两册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页面的使用和周转 2.7 物理页面的分配 2.8 页面的定期换出 2.9 页面的换入 2.10 内核缓冲区的管理 2.11 外部设备存储空间的地址映射 2.12 系统调用brk() 2.13 系统调用mmap() 第3章 中断、异常和系统调用 3.1 X86 CPU对中断的硬件支持 3.2 中断向量表IDT的初始化 3.3 中断请求队列的初始化 3.4 中断的响应和服务 3.5 软中断与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟中断 3.8 系统调用 3.9 系统调用号与跳转表 第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性调度 4.8 系统调用nanosleep()和pause() 4.9 内核中的互斥操作 第5章 文件系统 5.1 概述 5.2 从路径名到目标节点 5.3 访问权限与文件安全性 5.4 文件系统的安装和拆卸 5.5 文件的打开与关闭 5.6 文件的写与读 5.7 其他文件操作 5.8 特殊文件系统/proc 第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 7.6函数sys—connect()——请求连接 7.7报文的接收与发送 7.8插口的关闭 7.9其他 第8章设备驱动 8.1概述 8.2系统调用mknod() 8.3可安装模块 8.4PCI总线 8.5块设备的驱动 8.6字符设备驱动概述 8.7终端设备与汉字信息处理 8.8控制台的驱动 8.9通用串行外部总线USB 8.10系统调用select()以及异步输入/输出 8.11设备文件系统devfs 第9章多处理器SMP系统结构 9.1概述 9.2SMP结构中的互斥问题 9.3高速缓存与内存的一致性 9.4SMP结构中的中断机制 9.5SMP结构中的进程调度 9.6SMP系统的引导 第10章系统引导和初始化 10.1系统引导过程概述 10.2系统初始化(第一阶段) 10.3系统初始化(第二阶段) 10.4系统初始化(第三阶段) 10.5系统的关闭和重引导

52,781

社区成员

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

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