22

现在我只知道 Scientiamobile 的 WURFL 和其他一些。这些库或数据库告诉你很多关于设备的信息,但它们都不能清楚地表明你不应该使用 CSS 过渡或其他类型的动画,因为即使设备支持它,与这些功能完全不同的故事将顺利运行,这是我在构建移动 Web 应用程序时最关心的问题。

使用“WURF”数据库在这个方向上“分类”设备在技术上是否可行?以及我应该使用哪些设备功能将设备“分组”为“快速”的图形功能?

最后,我只需要从 1 到 5 对设备进行评分,以确定我可以使用哪些 gfx 操作。

好吧,欢迎任何想法。事实证明这是真正的脑筋急转弯,除了大量有关设备上限的数据外,互联网上的研究并没有带来任何有用的信息。

Update-1:我刚收到 ScientiaMobile 的回复:“我们一直在尝试某种形式的 Javascript 性能指数(可能基于现有基准之一)的想法,这可能会给出一些指示,但我们仍然还没有。问题很复杂。”

Update-2:我们在移动网络应用中发现的最大瓶颈

  1. 动画力量
  2. PNG透明度
  3. 文本和框阴影
  4. 图像大小调整

对我们来说,确定我们需要禁用这些功能就足够了,因为它们会使任何应用程序瘫痪。可能还有其他方法。

谢谢你。

4

3 回答 3

10

不幸的是,对于一般情况,我不相信今天这是可能的。

如果您只对有限数量的设备感兴趣,当然您可以测试每个设备,并通过用户代理或基于 JavaScript 的检测专门针对这些设备。

在厚应用程序的上下文中(例如,您使用Apache Cordova之类的“包装”您的网站),可以提供对某些设备内部的 JavaScript 访问(例如,总内存量、可用内存量,处理器速度),但除此之外,此信息不可从浏览器获得。正如您所暗示的那样,访问此类设备信息可能仍然不够(例如,看似“高规格”的设备性能不佳)。

像Modernizr这样的JavaScript 特征检测库可以回答用户当前的浏览器是否支持诸如 box-shadow 和 text-shadow 之类的东西,但不提供有关渲染支持的特征的效果速度的信息。

同样,来自Browserscope和相关项目ringmark的数据集(有点类似于 WURFL 的 JavaScript)通过众包基准测试(例如,iPhone 是否支持 CSS3 转换?)在每个浏览器版本的基础上回答这些浏览器支持问题,以及一般情况下,这是必要的。您需要针对有问题的各种功能运行基准测试并评估实时性能。然而,即使这样也有其局限性:

  • 由于移动用户四处走动、接听电话、更改硬件设置、启动后台应用程序等,速度的必要条件(可用内存、处理器、电池、网络连接等)不断变化,因此基准测试的结果是可能不可靠/不可重复。
  • 基准测试需要时间,并且总是会增加(希望不引人注意的)延迟。
  • 根据功能,基准测试可能不实用。
  • 功能在组合(例如,为带有阴影的透明 PNG 动画)或按比例(例如,页面上的每个图像都在动画)时的行为可能与基准测试中的单独行为不同。
  • 如果您依赖基准数据集而不是执行自己的实时基准测试,那么数据集的样本大小、范围和年龄会极大地限制其有用性。

最后一点是,我什至没有提到性能是相当主观的事实。假设以某种方式可以评估/预测动画的速度。如果动画将以 15 fps 运行,用户是否应该看到该动画?5帧呢?谁将成为最终的仲裁者来决定给定功能是否表现得足够好

我今天能提供的最好建议是暂时减少(或消除)您对麻烦功能的依赖。建议回到使用带有预合成阴影的图像或在没有 CSS3 的情况下制作背景渐变的“旧方式”似乎很糟糕,但归根结底,用户体验应该优先于使用闪亮的新技术。许多移动设备根本不存在,检测方法也不存在。如果您必须使用这些功能,或许可以考虑一种简单但不显眼的方式让用户选择加入/选择退出,例如 Gmail 的“标准”与“基本 HTML”视图选项,或者考虑自动选择已知良好的浏览器.

于 2013-04-14T20:44:43.113 回答
2

除了已经说过的“user113215”之外,我不能再添加太多了。它也不是对实际问题的回答,而是对实际问题的回答:

我对一些用户进行了实验,我们使用了一个简单的欢迎弹出菜单,要求用户关闭阴影和动画等特殊效果。大多数测试用户确实很欣赏这种选择,并且清楚地理解了这种菜单的方式。我们现在确实将其集成得更高级,并与用于自动预选 GFX 效果的隐藏基准相结合。

谢谢你。G

于 2013-04-18T13:14:43.593 回答
0

简而言之,没有。我们如何定义动画和图形的平滑度完全取决于 FPS(每秒帧数)。在这个问题中,我们谈论的是“web-app”,它们在客户端使用 HTML 和 JS。由于没有一个客户端提供程序通过HTML或JS获取FPS的接口,因此无法判断客户端是否流畅。

但是,如果你真的想要一个关于 web 应用程序性能的基准。您可以使用stats.js来监控 stat 的变化,并为您提供一个基准来建议您的客户端在运行时激活或禁用任何类型的效果。这种方法甚至可以与大多数 FX 的 Javascript 库(如 jquery)一起使用。但这需要一些时间才能让您在应用更改之前获得足够的数据,并且统计数据可能与设备的状态不同,例如内存使用情况、并发应用程序等。

于 2013-04-16T08:01:26.627 回答