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

Már*_*son 28 javascript browser performance benchmarking

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

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

有没有这种事情的例子?

衡量这一点的最佳方法是什么 - 会计事项,比如繁忙的CPU上的临时减速?

笔记:

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

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

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

Mar*_*sen 11

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

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

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

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

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

你能做的最好的就是

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

    还是更好

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

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


Guð*_*r H 8

不需要明确基准的不同方法是逐步启用功能.

您可以按优先顺序应用功能,并且在每个功能之后,如果已经过了一定的时间,则删除其余功能.

确保最昂贵的功能最后,您可以根据浏览器的快速程度向用户提供一些适当的功能选择.

  • 实际上它几乎确保了不一致的零碎效果 - 对于那些浏览器速度慢的人。 (2认同)

Már*_*son 0

一些想法:

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