导航计时API后备

时间:2013-09-25 22:06:08

标签: javascript mobile safari user-agent navigation-timing-api

如果需要,我想使用Navigation Timing API来提供大量资源。一个问题是Safari不支持它。

我挑战你,同事和可能更有经验的开发人员,向我展示以下代码无法按预期工作的情况

我们检测到对API的支持,然后有一些后备,不幸的是,不幸的是,我们不得不做一些UA嗅探来为旧版本的IE和桌面Safari提供大量资源。

if (typeof performance != null) {

    // Navigation Timing API is Supported

    if (performance.timing.responseEnd - performance.timing.requestStart < 500) {

        // Connection is fast enough to provide large resources.

    }

} else {

    // Navigation Timing API is NOT supported

    if ( !navigator.userAgent.match(/iPhone|Android/) ){

        // Browser is either desktop Safari, Safari on iPad, or IE 8,7,6
        // Assume a fast connection. Provide large resources

    }

}

如果浏览器不符合上述任何条件,则可能是iPhone上的Mobile Safari或旧版Android,我们不得不为其提供移动优先资源。

现在,给我一个新的东西。如果这是一种可怕的方法,我真的很想知道。

我现在看到的唯一问题是任何没有JS的桌面网站都会获得移动资源。

1 个答案:

答案 0 :(得分:5)

以下是来自其中一位参与规范的w3c人员的填充物:http://nicj.net/usertiming-js/

我建议将其作为一种更清洁的方法。

<强>更新
我一直在生产中使用这种方法取得了不错的成功。 http://blog.patrickmeenan.com/2013/07/measuring-performance-of-user-experience.html#comment-form

https://gist.github.com/pmeenan/5902672#file-user-timing-js

我还会研究boomerang.js的带宽检测:
https://github.com/lognormal/boomerang http://www.youtube.com/watch?v=gy1DTBMOA74