【发布时间】:2010-11-15 17:36:59
【问题描述】:
我想计算页面加载时间;这意味着从第二个 0(加载了一个小 jquery sn-p)到第二个 x,当整个页面被加载时。
我想知道是否有人有过它的经验,以及如何正确实施它的想法。
我不需要扩展,我已经有 firebug,我需要一个 js 解决方案
谢谢:)
【问题讨论】:
标签: jquery optimization time load
我想计算页面加载时间;这意味着从第二个 0(加载了一个小 jquery sn-p)到第二个 x,当整个页面被加载时。
我想知道是否有人有过它的经验,以及如何正确实施它的想法。
我不需要扩展,我已经有 firebug,我需要一个 js 解决方案
谢谢:)
【问题讨论】:
标签: jquery optimization time load
正如其他人所提到的,这不会非常准确。但这应该是合理的。
在您的<head> 中,即尽早:
<script>
var startTime = (new Date()).getTime();
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(window).load(function () {
var endTime = (new Date()).getTime();
var millisecondsLoading = endTime - startTime;
// Put millisecondsLoading in a hidden form field
// or Ajax it back to the server or whatever.
});
</script>
关键是这种行为,from the jQuery docs:
当绑定到窗口元素时, 用户代理时触发事件 完成加载所有内容 文件,包括窗口、框架、 对象和图像。
【讨论】:
由于脚本一被解析就执行,我建议你在标题中放置一个脚本标签,然后在你加载 jQuery 后,使用脚本来挂钩页面加载事件:
<html>
<head>
<script>
// Capture start time
</script>
...
<script src="jquery.js" />
<script>
$(window).load(function() {
// Capture end time
});
</script>
...
这样您应该能够尽可能多地捕获页面加载时间。
【讨论】:
使用浏览器插件会更好吗?用 JavaScript 计算必然会低估页面加载时间,因为它不包括加载 jQuery sn-p 的时间,也不包括浏览器发送请求和网络服务器响应之间的时间?
有一个用于 Firefox 的 Load Time Analyzer 插件。
【讨论】:
如果你这样做是为了优化,那么我建议你使用Yslow。它是一个 Firebug-Firefox 扩展。它可以显示页面加载时间和许多其他有用的信息。
【讨论】:
阅读W3C recommendation for Navigation Timing
值得注意的:
例如,以下脚本显示了一个天真的尝试来测量 完全加载页面所需的时间:
<html>
<head>
<script type="text/javascript">
var start = new Date().getTime();
function onLoad() {
var now = new Date().getTime();
var latency = now - start;
alert("page loading time: " + latency);
}
</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>
脚本计算加载页面所需的时间 头部中的第一个 JavaScript 位被执行,但它没有给出 有关从 服务器。
为了满足对用户体验完整信息的需求,本 文档介绍了 PerformanceTiming 接口。这个界面 允许 JavaScript 机制提供完整的客户端延迟 应用程序中的测量。使用建议的接口, 可以修改前面的示例来衡量用户的感知页面 加载时间。
以下脚本计算自 最近的导航。
<html>
<head>
<script type="text/javascript">
function onLoad() {
var now = new Date().getTime();
var page_load_time = now - performance.timing.navigationStart;
alert("User-perceived page loading time: " + page_load_time);
}
</script>
</head>
<body onload="onLoad()">
<!- Main page body goes from here. -->
</body>
</html>
【讨论】:
【讨论】: