如何识别网站中的慢速设备?

2024-04-01

当为移动设备调整网页时,我总是依赖 CSS 媒体查询。

最近我不再只担心屏幕尺寸,还担心许多移动设备的 javascript 引擎。一些依赖于窗口滚动或快速 DOM 转换序列的常见 javascript 效果在慢速设备上效果非常糟糕。

有没有办法猜测设备性能,以便我可以启用/禁用在慢速设备上看起来很糟糕的元素?

到目前为止我只能想到不好的解决方案:

  1. 屏幕尺寸。窄屏幕“可能”意味着设备速度慢
  2. 用户代理信息 http://en.wikipedia.org/wiki/User_agent#User_agent_identification。我可以查看设备、浏览器或 CPU,但这似乎不是一个稳定的长期解决方案,因为需要考虑的设备数量

更新: 修正了我的问题以集中解决一个问题。评论里有一个很好的解决触摸界面问题的方法。


当然,对于这个问题似乎没有特别好的解决方案(这是有道理的,因为这种类型的东西通常应该是隐藏的东西类型)。我认为无论哪种方式,你最好从 UA 检测开始,以处理那些已知属于某一类别的平台。那么您将有两种选择来灵活适应未知/不确定的平台:

  1. 渐进增强:从精简测试开始,加载一个或多个小型性能测试来衡量设备性能,然后加载文件以进行适当的增强。测试例如已经提供或在:如果计算机速度慢,请跳过一些代码 https://stackoverflow.com/questions/1055957/skip-some-code-if-the-computer-is-slow

  2. 优雅的降级:将那些可能在较慢的设备上导致不利用户体验的功能包装在一个高阶函数中,如果它们在第一次执行时花费太长时间,则该函数将替换它们。在这种情况下,我可能会将其添加到Function.prototype然后允许将可接受的延迟参数链接到函数定义上。第一次调用后存储经过的时间,然后在第二次调用时,如果经过的时间超过延迟,则通过回退换出该函数。如果经过的时间可以接受,则通过交换标准函数来删除分析代码。我需要坐下来制定示例代码(也许这个周末)。这也可以通过其他参数进行调整,例如在交换之前进行多次分析。

第一个选项可能是更友好的选项,但第二个选项可能对现有代码的干扰较小。 Cookie 或收集进一步的 UA 数据也有助于在检索信息后继续分析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何识别网站中的慢速设备? 的相关文章

  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • 暂停除了已激活的玩家之外的所有其他玩家。

    我有这个插件 它可以将不同的样式应用于 html5
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • SQL Server 中子查询的总和

    我有一个查询 里面有一些子查询 我想添加一个求和查询来对它们进行求和 我怎样才能做到这一点 example Id SELECT COUNT FROM table1 LEFT JOIN table2 on as col1 SELECT COU
  • #评估图像数据

    如何使用 Eval 将 sql varbinary 数据 图像 绑定到图像 像这样的东西
  • Homebrew pyenv安装错误dyld:未加载库:/usr/local/opt/readline/lib/libreadline.7.dylib

    在 MacOS Mojave 上从 Homebrew 安装 pyenv 后 尝试安装任何 python 版本时出现构建错误 跑步时pyenv install对于任何版本 构建都会失败并出现错误 dyld Library not loaded
  • TypeScript 类型根据其他参数缩小回调中函数参数的范围

    我正在处理经典的节点回调 例子 myFunction foo err Error null data Buffer gt if err typeof err is Error typeof data is Buffer undefined
  • codeigniter 数据传递控制器->库->视图

    我有一个代码点火器问题 我试图将数据从控制器发送到库 发送到视图 我在视图中收到此错误 Message Undefined variable crimes 文件名 views crime view php Line 45 在调试时 我转储
  • 如何将 .php 文件上传到 Heroku

    我需要将 php 文件上传到我的 Heroku 网站 这是如何使用终端完成的 我已登录终端并可以看到我的应用程序等 谢谢你的帮助 如果您需要通过终端在 Heroku 应用程序上上传文件 您需要跟踪它并使用Git 安装并配置 heroku 工
  • 就空间而言最快的方法——用Python找到素数

    也许这是一个愚蠢的问题 但我想知道你是否可以提供用Python查找素数的最短来源 我还想知道如何使用 map 或 filter 函数查找素数 谢谢 编辑 当我说最快 最短时 我的意思是使用较少字符 单词的方式 无论如何 不 要考虑竞争 我想
  • 有没有办法强制 Gerrit 将分支中的所有提交推送到代码审查?

    Gerrit 将合并提交历史记录中较早且位于存储库的不同 分支 中的潜在未经审核的更改 这是一个例子 结账 gerrit 分支devel 创建file1 txt 添加 提交 推送到refs heads temp branch 创建file2
  • 我在运行 flutter create my_appName 时收到以下错误:“my_appName”不是有效的 Dart 包名称

    我尝试过将flutter升级到最新版本 我仍然遇到同样的错误 我遇到了完全相同的错误 按照 Flutter 团队附加的命名约定重命名我的工作目录后here https dart lang github io linter lints pac
  • 自动将提交消息附加到 Git 中提交的文件

    我的目标是在存储库中每个文件的末尾维护所有提交历史记录 消息的日志 我使用 commit msg 挂钩来获取提交消息 准备它并将其附加到文件中 但是 我注意到由于文件在暂存后发生了更改 因此 git status 仍然显示为已修改 执行此操
  • 在 MVVM Android 中使用共享首选项的最佳实践?

    我一直在寻找在 Android 的 MVVM 架构中使用共享首选项的最佳方法 但我只能找到一些片段 因此没有清晰的图像来以最佳方式做到这一点 因此我有几个问题 我应该在应用程序上保留 SharedPrefs 的单例实例吗 ViewModel
  • 更改 HTML 数据列表自动完成行为

    我正在尝试为我正在开发的网站实现搜索自动完成功能 我正在使用 HTML 数据列表 其中的选项是从后端 MySQL 数据库动态生成的 与 AJAX 通信 但是 数据列表自动完成功能并不像我想要的那样工作 如果关键字不按顺序排列 自动完成功能似
  • 将Admob集成到Android问题

    我正在尝试将 Admob 集成到 android 但最终没有成功 该文档说需要提供 DeviceID 才能获取真实设备的广告 您能帮我解决这个问题吗 但我通过设置 AdManager TestEmulator 在模拟器中获取广告 使用 Ad
  • Common Lisp 中重置状态

    新手 Common Lisp 问题在这里 有没有办法重置环境状态 我的意思是 是否有一些命令可以使 REPL 恢复到启动后的相同状态 即取消所有变量 函数等 或者如果这不在 Common Lisp 标准中 是否有一些扩展在 SBCL 我使用
  • 来自 Yelp API 的错误请求

    灵感来自这个 Yelp 教程 https github com Yelp yelp api blob master v2 python sample py 我创建了一个脚本来搜索给定城市的所有健身房 我调整了脚本这些更新 http www
  • 将可变参数传递给 printf [重复]

    这个问题在这里已经有答案了 我想要一个辅助功能log它主要执行以下操作 log file array has d elements n 10 writes 2014 02 03 16 33 00 array has 10 elements
  • 按名称从数据框中删除列[重复]

    这个问题在这里已经有答案了 可能的重复 从 R 中的 data frame 中删除整列 https stackoverflow com questions 6286313 remove an entire column from a dat
  • 等待异步方法在 for 循环中完成

    我有一个包含三个异步方法的for循环 我想在这3个异步方法完成后进行一些处理 void getAllUsersInformations dispatch async dispatch get global queue DISPATCH QU
  • 从外部访问 while 循环内部的变量(C#)?

    我是 C 新手 我试图从这段时间起达到 MAX 的价值 这样我就可以在外面使用它 但我不能 任何人都有一些想法 提前致谢 while Condition Double MAX somecode Console WriteLine The O
  • 如何识别网站中的慢速设备?

    当为移动设备调整网页时 我总是依赖 CSS 媒体查询 最近我不再只担心屏幕尺寸 还担心许多移动设备的 javascript 引擎 一些依赖于窗口滚动或快速 DOM 转换序列的常见 javascript 效果在慢速设备上效果非常糟糕 有没有办