有没有一种工具可以测量页面元素的实际渲染时间?我指的不是资源下载时间,而是浏览器渲染某些内容所花费的实际时间。我知道这个时间会因客户端机器上的因素而有所变化,但是了解渲染引擎需要很长时间才能加载的内容仍然非常方便。考虑到Web应用程序现在变得非常依赖于客户端,我想这应该是一个有用的实用工具。您有什么想法吗?
有没有一种工具可以测量页面元素的实际渲染时间?我指的不是资源下载时间,而是浏览器渲染某些内容所花费的实际时间。我知道这个时间会因客户端机器上的因素而有所变化,但是了解渲染引擎需要很长时间才能加载的内容仍然非常方便。考虑到Web应用程序现在变得非常依赖于客户端,我想这应该是一个有用的实用工具。您有什么想法吗?
我一直在使用这个脚本来分析某些页面的渲染时间:
<script language="JavaScript">
<?
$output = str_replace('=', 'A', base64_encode(file_get_contents('data.txt')));
echo "\tCode = \"" . substr($output, 0, 512) . "\"";
$size = strlen($output);
for ($i = 512; $i < $size; $i += 512)
echo "\n\t + \"" . substr($output, $i, 512) . "\"";
echo ";\n";
?>
Data = "";
Dict = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
j = Code.length -3;
for (i = 0; i < j; i += 4) {
Data += String.fromCharCode(((Dict.indexOf(Code.charAt(i )) << 2) | (Dict.indexOf(Code.charAt(i + 1)) >> 4)) & 0xff);
Data += String.fromCharCode(((Dict.indexOf(Code.charAt(i + 1)) << 4) | (Dict.indexOf(Code.charAt(i + 2)) >> 2)) & 0xff);
Data += String.fromCharCode(((Dict.indexOf(Code.charAt(i + 2)) << 6) | (Dict.indexOf(Code.charAt(i + 3)) )) & 0xff);
}
time_start = (new Date).valueOf()/1000;
document.write(Data);
time_elapsed = (new Date).valueOf()/1000 - time_start;
alert(time_elapsed);
</script>
这是一部分 PHP,一部分 JavaScript。 data.txt 是包含要分析的 HTML 的文件。 在 IE 和 FF 上进行了测试。
Firefox的Firebug已经在“Net”选项卡中集成了它。
需要修改Firefox(我使用的是版本12.0)配置,输入about:config
在地址栏中搜索dom.send_after_paint_to_content
将dom.send_after_paint_to_content
设置为true。
MozAfterPaint
然后会在网络加载时间轴上以小绿色垂直线的形式呈现,除了蓝色(DOMContentLoaded
)和红色(load)线。