钥匙要点
- >网络信息API可以通过提供有关用户网络连接的信息,包括它是否是计量和带宽的估计来显着增强用户体验。此信息可用于有条件地加载图像,视频,字体等,即使在较慢或计量的连接上也确保最佳性能。 >
- 实现网络信息API涉及使用JavaScript访问API的属性和方法。 API对象由Navigator.Connection返回,并提供两个仅读取属性:带宽和计量。这些属性可用于根据用户的连接状态有条件地加载高分辨率图像或其他大资产。 尽管具有潜在的好处,但网络信息API当前的浏览器支持有限,并且可能会发生变化。但是,对于移动友好的网站或应用程序,仍然值得考虑,因为它可以帮助防止页面变得太大且在移动网络上加载缓慢。如果API更改,则可以对相关功能进行更新,以确保站点继续做出适当的反应。
-
响应式网络设计彻底改变了网络。当在一系列不同的设备和屏幕上查看时,一个站点可以调整其布局。所需的只是一些媒体查询,以检测屏幕尺寸并加载替代样式或样式表。
但是,使用屏幕尺寸来检测浏览器功能类似于通过查看无线电来判断汽车的速度。现代智能手机和平板电脑的分辨率越来越大,并且会愉快地显示出典型的桌面视图。如果该视图添加了许多字体,图像或其他资产,则移动用户可能会收到降级 -
- 体验,因为它们处于较慢或计量的连接上。
尽管网络信息API草案规范在2011年发布,但此时仅提供Firefox和Chrome提供实验支持。在我们获得供应商共识之前,API可能会发生变化:
评估带宽很困难。当您在移动和Wi-Fi网络之间移动或切换时,它可能会经常发生变化。网络容量可能很好,但是与特定服务器的连接不会得出。保持带宽估算值也可能是处理器和网络密集型。
api基础知识
网络信息API对象由Navigator.connection返回。为了确保跨浏览器兼容性,我们需要:<span>var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;</span>您可能需要将Navigator.msconnection添加到该列表中,尽管IE通常会实现非排名的API。 我们的联系 对象提供两个只读属性:
- 带宽 - 双重表示Mb/s(每秒兆字节)的当前带宽的估计。如果用户离线和无穷大,则该值将为零。请注意,大多数网络提供商每秒引用了Megabits中的值,典型的繁忙移动3G连接将约为400Mbps〜 = 400,000位/s〜 = 50kb/s〜 = 0.05MB/s。 metered - 一个布尔值,如果是,则意味着用户的连接受到限制,并且在可能的情况下应限制带宽的使用。
- 例如:
<span>if (connection && !connection.metered && connection.bandwidth > 2) { </span><span>// load high-resolution image </span><span>var img = document.getElementById("kitten"); </span> img<span>.src = "/images/kitten_hd.jpg"; </span><span>}</span>在此代码中,当可用高带宽时,将设置全局highbandwidth变量。其他代码可以做出相应的反应,例如当高键宽为false时:
<span>// default bandwidth </span><span>var highBandwidth = false; </span> <span>// bandwidth change handler </span><span>function <span>BandwidthChange</span>() { </span>highBandwidth <span>= (!connection.metered && connection.bandwidth > 2); </span><span>console.log( </span><span>"switching to " + </span><span>(highBandwidth ? "high" : "low") + </span><span>" bandwidth mode" </span><span>); </span><span>} </span> <span>// Network Information object </span><span>var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; </span> <span>// initialize </span><span>if (connection) { </span>connection<span>.addEventListener("change", BandwidthChange); </span><span><span>BandwidthChange</span>(); </span><span>}</span>
- 高分辨率图像未加载
- 不必要的字体未加载
- ajax轮询放缓
- ajax超时参数增加了
<span>var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;</span>这使我们能够有条件地加载项目,例如CSS中的背景图像,例如
<span>if (connection && !connection.metered && connection.bandwidth > 2) { </span><span>// load high-resolution image </span><span>var img = document.getElementById("kitten"); </span> img<span>.src = "/images/kitten_hd.jpg"; </span><span>}</span>仍然可以在媒体查询加载的桌面布局中检查此条件。
您是否应该使用网络信息API? 在撰写本文时,网络信息API几乎没有浏览器支持,并且可能会更改。就是说,如果您要创建必须在移动设备上使用的网站或应用程序,那么现在一些计划可以阻止您的页面达到1.7MB。如果API发生变化,您只需要更新带宽的函数,您的网站将做出适当的反应。 我当然认为网络信息API值得考虑。
你吗? 关于网络信息API的常见问题(常见问题解答)
>网络信息API是什么,它如何工作?>网络信息API是一个工具,可提供有关设备用于与Web通信的网络连接的信息。它允许Web应用程序访问设备网络类型和速度的状态,可用于优化内容交付。例如,如果用户在慢速网络上,则网站可以选择发送较低质量的图像以提高负载时间。>
>我如何使用网络信息API来改善我的响应式网站? 🎜>网络信息API可用于增强您响应网站上的用户体验。通过检测用户的网络条件,您可以相应地调整网站的行为。例如,如果用户的网络缓慢,则可以减少发送的数据量,例如较低的分辨率图像或更少的视频内容。这可以显着提高网站的加载速度和整体性能。是否所有浏览器支持的网络信息API?
>
>我可以从网络信息API中获取哪些信息?>检测离线状态吗? Navigator.Online属性返回一个布尔值,该值指示用户的设备在线还是离线。是一个估计值,可能不是完全准确的。它基于最近观察到的网络条件,可能无法反映当前网络条件。因此,应将其用作指南,而不是网络条件的确定性度量。>
可以与服务工作者一起使用网络信息API吗?与服务工作者。这使您可以根据用户的网络条件来调整服务工作者的行为,例如当用户在慢速网络上时更积极地缓存。
使用网络信息API有什么隐私含义? >
网络信息API可能会根据其网络条件来用于指纹用户。但是,API仅提供有关网络的粗粒信息,并且该信息也可用于本机应用程序,因此额外的隐私风险最小。
网络信息API的使用情况有哪些?网络信息API可用于改善用户体验。例如,视频流网站可以根据用户的网络速度自动选择适当的视频质量。新闻网站可以使用它来决定是加载高分辨率图像还是低质量图像。网络应用程序可以在慢速网络上警告用户,并且某些功能可能无法最佳地工作。
>
可以与服务工作者一起使用网络信息API吗?与服务工作者。这使您可以根据用户的网络条件来调整服务工作者的行为,例如当用户在慢速网络上时更积极地缓存。使用网络信息API有什么隐私含义?
>
网络信息API可能会根据其网络条件来用于指纹用户。但是,API仅提供有关网络的粗粒信息,并且该信息也可用于本机应用程序,因此额外的隐私风险最小。网络信息API的使用情况有哪些?网络信息API可用于改善用户体验。例如,视频流网站可以根据用户的网络速度自动选择适当的视频质量。新闻网站可以使用它来决定是加载高分辨率图像还是低质量图像。网络应用程序可以在慢速网络上警告用户,并且某些功能可能无法最佳地工作。
以上是如何使用网络信息API来改善响应式网站的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。