问题 什么是计算实际(网页)加载时间的可靠方法


我很想知道我的webapplication的实际平均页面加载时间。

简单地说,我的普通访问者在开始使用我网站上的页面之前如何等待日志。从他们点击链接到我的网站,直到网站完成渲染并准备接受输入。

标准解决方案似乎是使用Javascript来比较从脚本到window.onload()事件中的脚本的时间。

(看到: http://www.dreamincode.net/code/snippet1908.htm

这对我来说似乎不是一个非常精确的措施,因为它忽略了解析我的域并获得足够的HTML内容来开始Javascript解析所花费的时间。

它看起来像Safari在页面实际完成加载之前触发window.onload(http://www.howtocreate.co.uk/safaribenchmarks.html)。

有任何想法吗?

是否有可能通过Javascript获取当前请求的时间?
在所有浏览器中可靠地准备好所有事件后会发生什么事件?


3901
2018-03-20 14:38


起源

DNS解析时间是您无法控制的,无法可靠地进行测量。 - Ian Kemp


答案:


http://www.webpagetest.org/ 是测量加载时间的绝佳资源

此外,Google chorme dev工具还有一个时间轴面板,您可以在其中记录事件, 这是一个2.5分钟的视频,向您展示谷歌浏览器中的时间轴如何工作 http://www.youtube.com/watch?v=RhaWYQ44WEc


7
2018-04-27 13:51



以上是否有任何API可用?是否有其他可用于计算网站可靠加载时间的API? - SilentAssassin
不是我所知道的,那将是一个很棒的API! - Grundizer
因为我不知道这两个工具在许多页面中提供了非常不同的加载时间 - Lorenzo Belli


萤火 有一个“网络计时模式”,您可以在其中查看下载构成您网页的每个资源所需的时间。

另外,您应该测量服务器准备请求所需的时间。由于您无法影响浏览器和网络,因此服务器上的渲染时间应尽可能小。


3
2018-03-20 14:58





Firebug是一个很好的资源,有关您的页面加载的其他信息。此外,带有YSlow的Firebug更进了一步。 YSlow对你的页面运行了一些检查,并根据某些规则评估它的性能(你使用的是CDN,是你的CSS和JS压缩等)。我发现对我的网站做一些重大改进(JS压缩很棒)是非常宝贵的。


3
2018-03-20 15:05



我同意,Firebug是一个有用的工具。但是,它仅测量MY PC /浏览器/网络的加载时间;不是我网站的实际用户的平均时间(他们奇怪而精彩的PC速度,网络位置,浏览器类型等组合等) - David Laing


试试雅虎的YSLOW,它会回答你的问题帖子,但它只适用于FireFox(实际上它是firebug的一个插件)


1
2017-10-21 10:44





计算加载时间的最准确方法是在服务器端:一旦构建页面,在用户的浏览器上显示需要多少将取决于:

  • 当前的网络流量;
  • 用户的电脑规格;
  • 他正在使用哪种浏览器。

因此,使用JavaScript并不是一个很好的衡量标准,因为有很多因素你无法改变。

您可以做的最好的事情是衡量在服务器上生成每个页面的时间 -  你可以改进。

毋庸置疑,这将取决于您编写的语言。


0
2018-03-20 14:43



实际上,你可以做很多事情来改善客户端的渲染时间;从包含更少/更小的图像,改善js渲染时间,把东西放在CDN等等。但我同意;对延误所在位置进行细分非常有用。 - David Laing
诚然;你是对的。你也可以调整JS;它只是我把你的问题服务器端:) - Seb


可以做的一件事是使用Javascript来获取当客户端事件发生时触发回发到服务器的当前时间。将此值传递回服务器端将允许您将其作为您可以比较的初始“触发”时间呈现给客户端。

而不是使用onLoad,我相信您可以将脚本内联到文档的末尾,以便在浏览器呈现脚本的该部分时立即运行。这将允许您将内联脚本运行时的当前时间与用户启动呼叫时捕获的触发时间进行比较。

但是,正如Seb所提到的,由于您只能可靠地控制加载时的服务器端,因此最好在度量标准中包含服务器页面生成时间。如果您同时拥有这两个指标,则至少可以看到页面生成所花费的总时间,以及取决于客户端可能发生的各种延迟的程度。


0
2018-03-20 14:50



你不能依赖客户端时间。它可以设置为1969年1月的上午8点。 - Josh Stodola
客户端时间是什么并不重要。您的服务器不使用它,您只需将其传递回服务器,以便将其包含在响应中。所有计算都在客户端完成,因此客户端的时间设置用于前后。 - Jay S


我一直都找到了 Pingdom工具全页测试 很有用。它不是代码内的解决方案,但它确实可以让您快速了解页面的加载速度。


0
2018-03-20 14:55