导航计时 API 回退

Navigation Timing API Fallback

本文关键字:回退 API 导航      更新时间:2023-09-26
如果需要

,我想使用导航计时 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 上的移动野生动物园,要么是旧版本的 Android,我们被迫只给它移动优先的资源。

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

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

这是一位

从事规范工作的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/pmeenan/5902672#file-user-timing-js

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