如果浏览器太慢而无法正常处理复杂的JavaScript/CSS,那么在运行时确定的最佳方法是什么?



performance browser (4)

我正在尝试逐步启用/禁用页面上的JavaScript(和CSS)效果 - 这取决于浏览器的速度/速度。

我特意想的是低功耗移动设备和旧台式电脑 - 不仅仅是IE6 :-)

有没有这种事情的例子?

衡量这一点的最佳方法是什么 - 解决事情,比如繁忙的CPU暂时放慢速度?

笔记:

  • 我对浏览器/操作系统检测不感兴趣。
  • 目前,我对带宽测量不感兴趣 - 只有浏览器/ CPU性能。
  • 测量可能有趣的事情:
    • 基础JavaScript
    • DOM操作
    • DOM / CSS渲染
  • 我想以尽可能少影响页面渲染速度的方式执行此操作。

顺便说一句:为了不混淆/激怒用户行为不一致 - 这当然需要屏幕上的通知,以允许用户选择加入/退出整个性能调整过程。

[ 更新 :我错过了一个相关问题: 根据用户计算机的性能禁用JavaScript功能 。 谢谢Andrioid !]


Answer #1

一些想法:

  • 对测试设置时间限制似乎是一个明显的选择。
  • 将测试结果存储在cookie中似乎也很明显。
  • 测试的测试性能不佳可能会暂停进一步的脚本
    • 并触发显示非阻塞提示UI(如现代Web浏览器中常见的保存密码提示)
    • 询问用户是否要选择进一步的脚本效果 - 并将答案存储在cookie中。
    • 当用户没有回答提示时,如果连续测试比第一次测试完成得更快,则定期重复测试并自动接受脚本提示。
  • 在旁注 - 慢速网络速度也可能被测试
    • 通过计时下载外部资源(如页面自己的CSS或JavaScript文件)
    • 并将该结果与JavaScript基准测试结果进行比较。
    • 这可能对依赖大量XHR效应和/或大量使用<img/> s的网站有用。
  • 看起来DOM渲染/操作基准测试在页面开始渲染之前很难执行 - 因此可能会对所有用户造成非常明显的延迟。

Answer #2

不要在这里成为一个杀手,但在我看来,这不是一个目前可行的任何有意义的壮举。

这有几个原因,主要原因是:

  1. 无论你做什么测量,如果它有任何意义,都必须测试浏览器/ cpu的最大潜力,这是你无法做到的,并保持任何合理的用户体验

  2. 即使你可以,它也将是一个毫无意义的快照,因为你不知道在你的测试运行时,除了浏览器之外,其他应用程序的cpu是什么样的负载,并且在用户访问你的时候天气与否仍然会持续网站。

  3. 即使你可以做到这一点,每个浏览器都有自己的优点和缺点,这意味着,你必须测试每个dom操作函数,以了解浏览器完成它的速度,没有“一般”或“平均”根据我的经验,这里有意义,即使有,dom操作命令执行的速度也是基于dom中当前的内容,当你操作它时会发生变化。

你能做的最好的就是

  1. 让您的用户决定他们想要什么,并让他们在后悔时轻松改变决定

    还是更好

  2. 选择给他们一些你可以合理确定目标受众的大部分能够享受的东西。

稍微偏离主题,但遵循这一思路:如果你的用户不是他们社交圈中的技术领导者(就像这里的大多数用户一样,但世界上大多数人都不是),不要给他们太多的选择,即。 任何不是绝对必要的选择 - 他们不想要它,他们在为时已晚之前不理解他们决定的技术后果。


Answer #3

你可以试试一些基本的操作 - 看看史蒂夫·索德的剧集和雅虎的飞旋镖,以获得优秀的浏览器计时方法。 然而,要弄清楚度量如何与可接受的性能水平/有益的用户体验相关,它将变得相当复杂。

如果您要提供用户界面选择/退出的UI,为什么不让用户选择应用程序中的眼睛级别与渲染速度?


Answer #4

您可以使用Web Workers运行所需的所有基准测试,然后根据结果将您的检测结果存储在cookie中。 当然,这仅适用于HTML5支持的浏览器





benchmarking