我想以编程方式确定页面加载所需的时间,类似于某些扩展程序(例如 Speed Tracer)的加载方式。例如,我想知道何时触发某些关键事件,例如网络连接、DOM 加载事件和 SSL 网络计时。
因为 Chrome for Android 不支持扩展,有没有办法在代码中做到这一点?
我想以编程方式确定页面加载所需的时间,类似于某些扩展程序(例如 Speed Tracer)的加载方式。例如,我想知道何时触发某些关键事件,例如网络连接、DOM 加载事件和 SSL 网络计时。
因为 Chrome for Android 不支持扩展,有没有办法在代码中做到这一点?
有一种叫做“ Navigation Timing API ”的东西可以在 Android 版 Chrome(以及桌面版 Chrome、Internet Explorer 和 Firefox)上使用。
按照本文档中的说明将您的 Android 设备连接到您的计算机并启用“远程调试模式” 。
在您的计算机上打开 Chrome 并访问 localhost:9222 以访问 Chrome for Android 的 DevTools。
在控制台中,键入以下内容。
> performance.timing
你会发现看起来像这样的东西(折叠时折叠)
connectEnd: 1364275296017
connectStart: 1364275296017
domComplete: 1364275296699
domContentLoadedEventEnd: 1364275296517
domContentLoadedEventStart: 1364275296458
domInteractive: 1364275296458
domLoading: 1364275296304
domainLookupEnd: 1364275296017
domainLookupStart: 1364275296017
fetchStart: 1364275296017
loadEventEnd: 1364275296705
loadEventStart: 1364275296700
navigationStart: 1364275295553
redirectEnd: 1364275296017
redirectStart: 1364275295553
requestStart: 1364275296025
responseEnd: 1364275296273
responseStart: 1364275296264
secureConnectionStart: 0
unloadEventEnd: 1364275296275
unloadEventStart: 1364275296275
您可以在 HTML5Rocks 的文章“使用 Navigation Timing 测量页面加载速度”中找到有关 Navigation Timing API 的更多详细信息。
如果你在你自己的 WebView 中加载它,你可以使用这样的东西:
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
long doneTime = System.getCurrentTimeInMillis();
int timeToLoad = doneTime - startTime;
}
});
long startTime = System.getCurrentTimeInMillis();
mWebView.loadUrl(yourUrl);
如果您正在寻找专门在 chrome 或 firefox 应用程序中测量,我认为除了尝试用秒表或其他东西手动测量之外,目前没有任何真正的解决方案。希望我错了。