2010-08-18 169 views
1

我使用PHP Curl来衡量网页的下载时间。我知道这不是一个浏览器实际下载时间的好表现;但我试图尽可能使用这种方法尽可能接近。使用PHP Curl计算下载时间

我的网页上有与它相关的3个文件

  1. 的index.html
  2. my_pic.gif
  3. 的style.css

我做了卷曲地对这些文件的然后一起添加下载时间以获得总下载时间。

我的问题是我该如何做计算,以尽可能接近模拟浏览器下载?

测量下载的次数卷曲选项有:

CURLINFO_TOTAL_TIME 
CURLINFO_NAMELOOKUP_TIME 
CURLINFO_CONNECT_TIME 
CURLINFO_PRETRANSFER_TIME 
CURLINFO_STARTTRANSFER_TIME 

会浏览器中经历所有这些步骤为每个3档以上的?

例如:

比方说,我做了CURLINFO_TOTAL_TIME上的index.html。

我还应该在my_pic.gif和style.css上做CURLINFO_TOTAL_TIME吗?然后将这些数字添加到index.html上的CURLINFO_TOTAL_TIME。

OR

我应该做my_pic.gif和style.css的一个CURLINFO_TOTAL_TIME负CURLINFO_STARTTRANSFER_TIME?然后将这些数字添加到index.html上的CURLINFO_TOTAL_TIME。

回答

0

获得确切的结果将是困难的,因为每一个浏览器处理它略有不同。

名称查询每个域只能执行一次,所以如果my_pic.gif和style.css驻留在同一个域中,那么index.html已经发生了查找。其次,大多数浏览器会一次请求多个文件,因此my_pic.gif和style.cs会同时被请求,只有更长的下载次数才会被计入。当然,更大的文件需要考虑用户线缆速度,但这不应该成为问题。

一个好的估计应该是:TOTAL_TIME(index.html的)+ MAX(TOTAL_TIME(my_pic.gif) - NAMELOOKUP_TIME(my_pic.gif),TOTAL_TIME(style.css文件) - NAMELOOKUP_TIME(style.css文件))

如果你想测试你真的需要下载多久,你可以得到Firefox的扩展YSLOW。它会告诉你整个页面需要多长时间才能下载,并绘制一个很好的图表,显示下载哪个元素的时间和时间。

+0

-1:来自RFC-2616“单用户客户端不应该与任何服务器或代理服务器保持2个以上的连接”。但实际上,测量页面响应(而不是URL响应)的唯一实用方法是使用javascript的brwoser。 – symcbean 2010-08-18 11:35:06

+0

我投了这个票,并选择它作为正确的答案,因为它实际上回答了我问的问题。我了解我用来确定下载时间的方法并不理想;然而,我原来的问题是如何尽可能接近浏览器下载时间与我使用的方法。我对另一种计算下载时间的方式并不感兴趣。 – Mark 2010-08-18 18:06:35

5

个人而言,我会做到这一点:

$t1 = microtime(true); 
// do all the curl requests 
$t2 = microtime(true) - $t1; 
echo $t2; 
+0

这不就像对所有3个文件做CURLINFO_TOTAL_TIME然后将它们加在一起? – Mark 2010-08-18 04:03:47

+0

是的,除了'CURLINFO_TOTAL_TIME'返回秒,而不是微秒。 – sberry 2010-08-18 04:06:04