一个Idhttp的奇怪问题?--附原代码 (100分)

  • 主题发起人 主题发起人 cwf2002cwf
  • 开始时间 开始时间
C

cwf2002cwf

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个计算网页 http 响应时间的程序,如下:

=====================================================================
unit idhttpA;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure myWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
private
{ Private declarations }

public
{ Public declarations }

end;
var
Form1: TForm1;
timestamp:dword;
myhttp:Tidhttp;
isOK:boolean;//用来截获respones 200信息,并屏蔽后面继续触发的该事件的开关;

implementation

{$R *.dfm}

procedure TForm1.myWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if ((myhttp.ResponseCode=200) and (isOk=false)) then
begin
isOK:=true;
timestamp:=GetTickCount-timestamp;
showmessage(inttostr(timestamp));
end;
showmessage(inttostr(myhttp.ResponseCode));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
myhttp:=Tidhttp.Create(self);
myhttp.OnWork:=myWork;
isOk:=false;
try
timestamp:=GetTickCount;

myhttp.Get('http://www.sina.com.cn');
except
on E:EIdHTTPProtocolException do
//showmessage('the error');
end;
myhttp.Free;
end;
end.

=======================The End ==============================================

我在delphi中run时, 第一次点击 button1时, 比如显示 218ms, 那么继续点第二次,第三次...
数值就会在 80~100之间,反正在数量级别上是第一次的一半,屡试不爽。

怎么样才能得到每次点击的数值是接近的呢?请高手指定。
PS:开始我还以为是因为Idhttp 的socket连接还维持着,所以第一次点击以后,接下来都会快点。
但是现在我已经在程序中把Idhttp free掉了呀。
 
是不是你和服务器之间有代理作了镜像啊?
 
无论用什么浏览器好象都是第一回要慢一些.
如果想测试连接速度,不如用Ping.
 
回二楼的, 现在要求是测试网站页面读取的效率呀。不是要测连同的速度。
回一楼的,我是直接通过网通连的, 没有代理的。
 
第一次建立网络连接的速据会比较慢一些,
网络路由会缓冲连接信息, 所以后面再建立连接,速度会较快
另外,程序本身的因素也会有影响,
你可以测试一下第一次访问不同网站的速度
 
to LiChaoHui

我试过了测试 不同的网址,或相同网站的不同网址都没有 这个现象。
 
不让我UP,可是我只想关注
 
那就是网站本身自己作了反向代理
 
第一次连接要作DNS域名到IP的解析。
路由器也要花更多的时间找路由,交换机上也是。
另外可能有cache 的原因
 
多人接受答案了。
 
程序本身的某些因素也有影响,Delphi的窗口第一次显示时,显得迟钝,
就是因为代码延迟调入内存引起的,
你所说的很可能是由于这个原因吧
 
后退
顶部