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