我正在使用PHP Curl来衡量网页的下载时间。我知道这不是浏览器实际下载时间的良好表示;但我正试图尽可能使用这种方法。
我的网页有3个与之关联的文件
我正在对每个文件进行卷曲,然后将下载时间加在一起以获得总下载时间。
我的问题是我应该如何进行计算以尽可能接近模拟浏览器下载?
测量下载时间的Curl选项是:
CURLINFO_TOTAL_TIME
CURLINFO_NAMELOOKUP_TIME
CURLINFO_CONNECT_TIME
CURLINFO_PRETRANSFER_TIME
CURLINFO_STARTTRANSFER_TIME
浏览器是否会针对上述3个文件中的每个文件执行所有这些步骤?
例如:
假设我在index.html上做了CURLINFO_TOTAL_TIME。
我是否应该在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 :(得分:5)
我个人会这样做:
$t1 = microtime(true);
// do all the curl requests
$t2 = microtime(true) - $t1;
echo $t2;
答案 1 :(得分: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。它会告诉你整个页面下载了多长时间,并绘制了一个很好的图表,说明了下载了哪个元素以及花了多长时间。