4

如果需要,我想使用 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 的桌面网站都会获得移动资源。

4

1 回答 1

4

这是一个来自 w3c 规范的人员之一的 polyfill: http: //nicj.net/usertiming-js/

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

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

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

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

于 2014-01-29T17:03:40.837 回答