使用 JavaScript 的代价!(2018 版)
(点击上方公众号,可快速关注)
英文:Addy Osmani 译文:开源中国
www.oschina.net/translate/the-cost-of-javascript-in-2018
建立交互式网站包括向用户发送 JavaScript 。通常,太多了。你是否经历过在一个手机页面上,它看起来已经加载好了,但是点击一个链接或者试图滚动页面的时候,什么也没发生?
一字节又一字节,JavaScript 仍然是我们发送给手机的代价最大的资源,因为它会很大程度上延迟交互。
由 WebPageTest(src) 评测的 CNN.com 的 JavaScript 处理时间。高端手机(iPhone8)在约4s的时间处理脚本。相比较而言,普通手机(Moto G4)是约13s的时间,以及2018年低端手机(Alcatel 1X)是约36s。
现在我们讨论一些策略,可以让你高效地传送 JavaScript ,同时给用户提供一个有价值的体验。
概括:
要保持快速,则只加载当前页面必要的 JavaScript 。优先考虑用户需要的内容,然后使用代码拆分延迟加载剩下来的内容。这是快速加载和交互的最好的机会。默认情况下,基于路由的代码拆分堆栈是一个转折。
接受性能预算,学会在预算中生活。对于手机来说,JS的预算目标为简化/压缩后小于170KB。未压缩时代码约为0.7MB。预算对成功至关重要,然而,他们单独不能神奇地修正 perf 数值。团队文化,结构和强制措施。没有预算的项目建立会导致性能退化并导致失败。
学习如何审计并裁剪 JavaScript 捆绑库。当你只需要一小部分却搭载了整个库,浏览器不需要的填充字符,或者重复代码,这些很容易发生。
每个交互都是一个新的“交互时间”的开始;考虑在这种情况下进行优化。传送数据的大小对低端手机网络至关重要,而且 JavaScript 解析时间受设备 CPU 限制。
如果客户端 JavaScript 对用户体验没有好处,问问自己是否真的有必要。也许服务端渲染 HTML 会更快一些。考虑将客户端框架限制到绝对需要它们页面上的使用。如果做的不好,服务器渲染和客户端渲染都会是灾难。
(本文基于我最近的“JavaScript 的代价”的演讲:https://youtu.be/63I-mEuSvGA)
网站因用户“体验”而膨胀
当用户访问网站,你可能正在下载大量文件,其中很多都是脚本。从给一个web浏览器的角度来看有点像这个:
扔给你一大堆文件
虽然我很喜欢JavaScript,但它总是网站中消耗最大的东西。我想解释一下为什么这是一个主要问题。
现在中等的web页面搭载了大概350KB的简化或压缩后的JavaScript脚本。浏览器需要处理的未压缩的脚本膨胀到了超过1MB。
注:不确定你的JavaScript包是否延迟了用户与网站交互速度?查看 Lighthouse:
https://developers.google.com/web/tools/lighthouse/
2018年7月的HTTP压缩状态的JavaScript报告中的统计突出显示了中等web页面搭载了约350KB的简化或压缩后的脚本。这些页面要花15s才能交互。
在移动设备上,搭载这么多的JavaScript脚本从经验来看要花费超过14+秒才能加载并交互。
其中的一个很大的因素是在移动网络中下载代码,然后再移动设备CPU上处理它,这个过程所花费的时间。
我们来看移动网络。
在某一指标上表现较好的国家,颜色较深。不包括在内的国家是灰色的。还有值得注意的是,即使在美国,农村的宽带速度要比城市慢20%。
这个来自OpenSignal的图表展示了全球4G网络的稳定性,以及每个国家的用户体验到的平均连接速度。正如我们看到的,很多国家的连接速度仍比我们想象中要慢。
不仅中型网站的350KB的脚本要花上一段时间才能下载,事实上,如果我们浏览热门网站,实际上会加载比这更多的脚本:
“Facebook.com和其他网址相关数据”中的未压缩的JS包大小数据。像谷歌表格这样的网站被突出显示为最多加载5.8MB的脚本(在解压缩后)。
我们在桌面和移动web上都遇到了这个瓶颈,这些网站有时会加载几兆字节的代码,然后浏览器需要处理这些代码。问题是,你能负担得起这么多JavaScript脚本吗?
JavaScript 有代价
“含有这么多脚本的网站根本不能送达全球的诸多用户;统计表示,用户不会(以后也不会)等待它们加载” — Alex Russell
注:如果你使用了大量的脚本,应该考虑使用 code-splitting 对其进行分解,或者使用 tree-shaking 技术减少 JavaScript 的加载量。
现代网站通常会通过 JS 包发送下面这些东西:
客户端框架或 UI 库
状态管理(比如 Redux)
Polyfills(一般现代浏览器不需要他们)
完整的库或仅用到的部分(比如 lodash 完整库、Moment + 其本地库)
一套 UI 组件(按钮、顶部、侧边栏等)
累积起来的代码越来越多,页面加载的时候也就越来越长。
加载网页就像电影胶片一样,有三个关键时刻。
即:是否发生?是否有用?是否可用?
加载是一个过程。我们正逐渐开始关心用户的良好体验。我们不再盯着 onload 和 domContentLoaded,而是会问“用户什么时候才能正常使用页面?”如果用户点击用户界面中L的o某个地方,是否有所反馈?
是否正在发生是指屏幕上开始显示某些内容。(导航开始了吗?服务器在响应吗?)
是否有用 指文本或内容显现之后,用户是否通过体验或参与感受到价值。
还有是否可用是指用户可以根据经验开始交互并发生一些事情。
我之前也提到过这个术语:“交互”,它到底是什么意思呢?
交互时间的可视化强调,不好的体验会让用户认为他们能达到某个目标,但实际上页面还没有加载完要达到这个目标所需要的代码。感谢 Kevin Schaaf 的关于交互的动画
对于要交互的页面,它必须能够快速响应用户输入。较小的 JavaScript 可以保证快速响应。
无论用户点击链接还是滚动页面,他们都需要看到有反馈他们动画的事情发生。如果做不到这样的体验,用户就会感沮丧。
灯塔有一系列以用户为中心的性能指标,比如在实验设置中的交互时间。
通常发生的地方是当服务端在渲染的过程中,下载一堆“溶入”界面的 JavaScript(添加事件处理函数和其它行为)。
浏览器可能会在处理用户输入的线程上运行许多可能需要处理的事件。这个线程称为主线程。
在主线程上加载太多 JavaScript(通过 <script> 等)会是个问题。把脚本加载到 Web Worker 或者由 Service Worker 处理脚本会减轻这些与交互时间相关的负责影响。
(这里有一个用户点击 UI 的例子。通常,用户勾选复选框,或者点击链接,一切都很美好。但如果我,们模拟阻塞主线程,就什么事都不会发生了。用户无法勾选复选框,也不能点击连接,因为主H线程被阻塞了:https://youtu.be/N5vFvJUBS28)
应该尽可能地避免阻塞主线程。了解更多内容,请看 “为什么 Web 开发者需要关心交互性”:
https://philipwalton.com/articles/why-web-developers-need-to-care-about-interactivity/
我们看到我们合作的团队遭受JavaScript影响了许多类型网站的交互性。
JavaScript可以延迟可见元素的交互性。可视化是Google搜索中的一些UI元素
太多(主线程)JavaScript可以延迟可见元素的交互性。这对许多公司来说都是一个挑战。
以上是Google搜索中的一些示例,您可以在这些示例中开始使用UI,但如果某个网站运行过多的JavaScript,则可能会在实际发生某些事情之前出现延迟。这会让用户感到有点沮丧。理想情况下,我们希望所有体验尽快互动。
通过WebPageTest和Lighthouse衡量news.google.com的互动时间(来源)
通过衡量Google新闻在移动设备上的交互时间,我们观察到大约7s的高端交互与低端设备在55秒内实现交互的巨大差异。那么,什么是交互性的良好目标?
谈到Time to Interactive,我们认为您的基准应该是在中等移动设备上的慢速3G连接上以五秒钟的速度进行交互。“但是,我的用户都在使用快速网络和高端手机!”......是吗?你可能会使用“快速”的咖啡店WiFi,但实际上只能获得2G或3G的速度。多变性问题
谁传输更少的 JavaScript 以减少响应时间?
Pinterest 将 JavaScript 包从 2.5MB 减小到 < 200KB,响应时间从 23 秒减少到 5.6 秒。收益提升了 44%,注册人数上升了 753%,移动网站的是周活跃人数提升了 103%。
AutoTrader 将他们的 JavaScript 包大小减小了 56%,响应时间减少了约 50%。
Nikkei 将 JavaScript 包大小减小了 43%,响应时间提升了 14 秒。
我们来设计一个更具弹性的 Web,它不依赖于加载巨大的 JavaScript。
交互性会影响很多东西。它可能会影响网站的移动数据规划,或者咖啡厅的 WiFi,或者他们I只是伴随着时断时续的连接。
这些事情发生的时候,你有一大堆的 JavaScript 需要运行,用户可以放弃等待网站的渲染。另外,如果有东西在渲染,也需要等待大量的时间才可以交互。理想情况下,较少的 JavaScript 可以减轻这些问题。
为什么 JavaScript 如此昂贵?
为了解释 JavaScript 会有如此之大的代价,我想告诉你在内容发送到浏览器之后发生了些什么。当用户在浏览器的地址栏输入 URL:
请求会被发送到服务器,然后服务器会返回一些标记。接着,浏览器解析这些标记,并找到必不的可少的 CSS、JavaScript 和图片。然后,浏览器还得获取并处理所有这些资源。
上面的动画准确描述了 Chrome 在处理你发送的所有内容时要干的事情(确实,它是一个巨大的表情工厂)。
这里存在一个挑战:JavaScript 最终会成为瓶颈。设想,我们希望能快速画出每一个像素,然后让页面可以交互。但是,如果 JavaScript 成为瓶颈,你最终只能看到东西却不能交互。
我们希望防止 JavaScript 为成现代体验的瓶颈。
要记住一点,作为一个流程,如果我们想要 JavaScript 变得更快,我们就必须快速地下载、解析、编译并执行它。
也就是说,我们必须保证快速的网络传输,以及处理关于脚本其它方面的事情。
如果你花很长的时间在 JavaScript 引擎中解析和编译脚本,就是延迟用户与你的体验交互的时间。
为了提供这方面的数据,这里有一个 V8(Chrome 的 JavaScript 引擎)在处理页面中脚本的时间分解数据:
JavaScript 解析/编译 = 在页面加载时 10–30% 时间消耗在 V8 (Chrome 的 JS 引擎) 上
橙色代表了当下流行的网站消耗在解析 JavaScript 上的全部时间。黄色部分则是编译所消耗的时间。它们总计占用了处理页面上 JavaScript 30% 的时间 —— 这是真实的成本。
对于 Chrome66 来说,V8 在后台线程中编译代码,将编译时间减少了 20%。但是解析和编译的代价仍然很高,而且想要看到一个大型脚本执行时间少于 50ms,实属罕见,哪怕不在主线程编译。
另一个要知道的是 JavaScript 的所有字节都不等价。200KB 的脚本和 200KB 的图片所需要的代价差异很大。
并非所有字节都是等价的。除开原始的网络传输成本,200KB 的脚本和 200KB 的 JPG 所需要的代价大相径庭。
他们的下载时间可能一样,但处理起来却需要不同的成本。
JPEG 图像需要解码、光栅化,然后绘制在屏幕上。JavaScript 需要下载,然后解析、编译、执行—— 还有大量需要引擎完成的其它步骤。请注意,他们的成本并不相同。
成本变得重要的原因之一是因为移动端。
移动端是一个谱系
移动端是一个包含了便宜/低端、中端和高端设备的谱系
如果运气好,我们可能会遇到一个中高端的手机。但实事上并非所有用户都有这么好的设备。
用户使用的可能是中低端的手机,而且各类设备之间也存在极大的差异;热节流、缓存大小差异、CPU、GPU —— 最终,处理资源的时间会像处理 JavaScript 一样存在较大的差异,这些都取决于所使用的设备。使用低端手机的用户甚至可能就在美国。
newzoo 发表了“对 23 亿 Android 智能手机的观察分析”。Android 在全球占有 75.9% 的市场A份额。预计 2018 年至少还有 3 亿的智能手机进入市场。其中有大量的 Android 设备。
下面是 2018 年各种硬件设备下对 JavaScript 解析时间的分析:
处理 (解析/编译) 1MB 未压缩的 JavaScript (压缩和 gZip 处理后 < 200KB)所需要的时间,这些时间是在真实设备上手工测得。
最上面是像 iPhone8 这样的高端设备,处理 JavaScript 相对较快。下面是一些普通手机,比如 Moto G4 和低于 100 美元的 Alcatel 1X。注意到处理时间的差异了吗?
随着时间的推移,Android 手机越来越便宜,而不是更快。这些设置的 CPU 频率更高,L2/L3 缓存也小得可怜。如果你期待用户都使用高端设备,那么你的目标用户就会减少。
我们从一个真实的网站来实际看看这个问题。下面是 CNN.com 的 JS 处理时间:
CNN.com 上的 JavaScript 处理时间,来自 WebPageTest
iPhone 8 (使用 A11 芯片) 在处理 CNN 的 JavaScript 比说通手机快 9 秒。这 9 秒可以让增强用户体验。慢得甚至需要特别说明:
对于 CNN.com,这个大量使用 JavaScript 的网站,比较中低端硬件通过 3G 访问加载的情况(来源)。Alcatel 1X 花了 65秒 才完成加载。
这暗示我们应该停止使用快速的网络和快速的设备。
有一些用户不会使用快速的网络,或者没有最新最好的手机,所以我们有必要从实际的手机和实际的网络环境开始测试。易变性确实是个问题。
“可变性是杀死用户体验的原因” - Ilya Grigorik。快速设备实际上有时可能很慢。快速网络可能很慢,可变性最终会使一切变得缓慢。
当差异可能会破坏用户体验时,使用缓慢的基线进行开发可确保每个人(快速和慢速设置)都能获益。如果您的团队可以查看他们的分析并准确了解您的用户实际访问您网站的设备,那么您将会提示您应该在办公室中使用哪些设备来测试您的网站。
测试真实的手机&网络
webpagetest.org/easy在“移动”配置文件下预先配置了许多Moto G4。如果您无法购买自己的中等级硬件进行测试,这将非常有用。
这里设置了许多配置文件,您可以使用这些配置文件已预先配置了常用设备。例如,我们有一些中等移动设备,如Moto G4准备测试。
在代表性网络上进行测试也很重要。虽然我已经谈到了低端手机和中位手机的重要性,但布莱恩霍尔特提出了这个观点:了解你的观众非常重要。
“了解您的受众,然后适当地关注应用程序的性能至关重要” - Brian Holt(src)
并非每个站点都需要在低端手机上的2G上表现良好。也就是说,在整个频谱范围内实现高水平的性能并不是一件坏事。
谷歌分析>观众>移动设备>设备 可视化设备&操作系统访问您网站的位置。
您可能在频谱的较高端或频谱的不同部分拥有广泛的用户。请注意您网站背后的数据,以便您可以合理地调用所有这些内容。
如果您希望JavaScript快速,请注意低端网络的下载时间。您可以进行的改进包括:减少代码,缩小源代码,利用压缩(即gzip,Brotli和Zopfli)。
利用缓存重复访问。对于CPU速度慢的手机,解析时间至关重要。
如果您是后端或全堆栈开发人员,您知道您可以获得有关CPU,磁盘和网络的费用。
当我们构建越来越依赖JavaScript的网站时,我们有时会以我们并不总是容易看到的方式支付我们发送的内容。
怎样才可以发送更小的 JavaScript
无论如何,只要我们能让发送出去的 JavaScript 最小,同还还能让用户有较好的体验,那么成功就在眼前。Code-splitting 就是一个能实现这一愿望的选择。
基于页面、路由或组件拆分巨大而完整的 JavaScript 包。如果“splitting”一开始就用在你的工具链中,你离成功就更近一步。
Code-splitting 的思想是这样的:不是向用户发送一个巨大的单个 JavaScript 文件 —— 就像一个巨大的披萨一样 —— 如果每次只给他们一块怎么样?只要有足够多片(但不是全部 —— 译者注)就能让当前页面跑起来。
Code-splitting 可以工作在页面、路由或组件级别。这对于很多现代的库和框架来说是件好事,这些库或框架可能通过 webpack 和 Parcel 生成脚本包。按照指南,可以将其用于 React、 Vue.js 和 Angular。
在 React 应用中通过 React Loadable 添加 code-splitting。React Loadable 是一个高阶组件,它可以将动态导入封装在对 React 友好的 API 中,将 code-splitting 应用于给定的组件。
最近,很多大型团队看到了胜利背后的 code-splitting。
基于希望用户能快速进入交互的需求,Twitter 和 Tinder 积极采用代码分割方法来重写他们的移动 Web 体验,其交互性能提高了 50%。
像 Gatsby.js (React)、Preact CLI 和 PWA Starter Kit,通过尝试,在普通的移动硬件上达到了快速加载以及快速入进交互的效果。
这些网站还做了一件事情,就是采用审查,使其成为工作流程的一部分。
定期审查 JavaScript 包。像 webpack-bundle-analyzer 这样的工具非常适合用来分析构建出来的 JavaScript 包,以及可视代码的导入成本,这对于将本地化迭代工作流程错综复杂的依赖关系可视化非常有效。(比如,使用 `npm install` 导入包时)
值庆幸的是,JavaScript 生态系统中有大量优秀的工具可用于包分析。
像工具 Webpack Bundle Analyzer, Source Map Explorer 和 Bundle Buddy 允许你审核你的包用以减少包的数量。
这些工具可视化了JavaScript包的内容:它们突出显示您可能不需要的大型库,重复代码和依赖项等。
来自Benedikt Rötsch的 “放下你的Webpack包,节制使用”
打包审计通常会突出显示重要的依赖项(如Moment.js及其语言环境)的机会,以获得更轻的替代方案(例如 date-fns)。
如果你使用 webpack, 您可能会发现我们打的包中通用库问题在打包中很有用。
衡量,调优,监控,然后重复
如果你不确定你对JavaScript性能方面是否有什么问题,请查看Lighthouse:
https://developers.google.com/web/tools/lighthouse/
你可能没有注意到,Lighthouse最近添加了大量有用的新的性能审计功能。
Lighthouse是一个嵌入到Chrome开发工具的工具。它也可以作为Chrome扩展使用。它给你一个深入的性能分析来凸显提高性能的机会。
我们最近已经在Lighthouse添加了对高“JavaScript启动时间”标记的支持。这个审计工具突出显示那些可能花大量时间来解析/编译的脚本,这些脚本延迟了交互。你可以将这个审计工具看做一个机会,不是拆分脚本,就是在这里做更少的工作。
你还可以做的另外一件事就是确定你不会为你的用户加载无用代码:
使用Chrome开发工具中的覆盖率标记来找到无用的CSS和JS代码。
代码覆盖率是开发工具中的一个特性,它可以让你发现页面中的无用JavaScript(以及CSS)。在开发工具中加载页面后,覆盖标记会显示执行了多少代码vs.加载了多少代码。你可以通过只加载一个用户需要的代码来提高页面性能。
注:通过覆盖率记录,你可以与应用交互,然后开发工具会刷新用到了哪些包。
对于找机会来拆分脚本以及在需要的时候延迟加载非必要代码,这是有价值的。
如果你正在寻找有效地为用户提供JavaScript的模式,请查看PRPL模式。
PRPL是高效加载的性能模式。它代表着:将关键资源推送(Push)到初始路由上,渲染(Render)初始路由,预缓存(Pre-cache)其他路由,延迟加载(Lazy-load)并按需创建剩余路由
PRPL (Push, Render, Precache and Lazy-Load) 是一种模式,用于为每条路径快速划分代码,然后利用服务工作者预先缓存未来要访问的路由所需的JavaScript和逻辑,并根据需要延迟加载它。
这意味着当用户导航到体验中的其他视图时,它很可能已经存在于浏览器缓存中,因此他们在启动脚本和获取交互方面的开销降低了很多。
如果你关心性能,或者你曾经为你的网站做过性能补丁,那么你知道有时你可能最终会遇到这样一类问题修正,几周之后回来才发现团队中的某个人正在处理的功能和无意中破坏了这类体验。它有点像这样:
值得庆幸的是,我们可以尝试解决这个问题,一种方法是制定性能预算。
性能预算至关重要,因为他让每个人都在页面上。他们创造了分享热情的文化,不断改善用户体验和团队责任感。
预算通过定义可计算的约束来允许团队达到他们的性能目标。正因为你不得不生活在预算的约束之中,所以每一个步骤都需要考虑到性能,而不能事后再考虑。
基于Tim Kadlec的工作,性能预算的指标可包括:
里程碑时间 — 基于加载页面的用户体验的计时(例如 Time-to-Interactive)。在页面加载时,您通常需要匹配多个里程碑时间来准确的呈现完整的故事。
基于质量的测量— 基于初始值(例如 JavaScript的weight,HTTP请求的number)。这些都专注于浏览器体验。
基于规则的测量— 由例如Lighthouse或者WebPageRest这样的工具生成分数。通常情况下,单个数字或者一些列的数据来评价您的网站。
Alex Russell发表了一片关于预算性能的tweet-storm文章,其中有几点值得关注:
“领导的支持很重要. 为了保持整体用户体验的良好性,领导愿意将特征工作保持在对技术产品的深思熟虑的管理中。”
“性能是有关工具支持的文化。浏览器尽可能的优化了HTML+CSS。将您的工作更多的投入到JS中会为您的团队和所用的工具带来负担。”
“预算不会让你伤心。他们的存在使得组织能够自我纠正。团队需要预算来约束决策空间并帮助打击他们。”
影响网站用户体验每个人都与网站的性能有关。
将性能作为讨论的一部分
性能更多是一种文化挑战,而不是技术挑战。
在规划会议和其它集会时讨论性能。询问商业项目关系人他们期望的性能是什么。他们是否明白性能是如何影响他们所关心的业务指标的?问开发团队他们如何规划定位性能瓶颈。当得不到满意答复的时候,他们开始讨论。
“通过展示性能是如何影响项目关系人所关心的性能指标,来使性能与他们的目标相关联。若没有性能文化,性能将无法保证。”——Allison McKnight
性能行动规划如下:
-创建性能视图。这是商业项目关系人和开发者达成共识的“良好性能”的协议。
-设置性能预算。从视图中挑出关键性能指标(KPIs),并从中设置合理的,可计量的目标。例如:“5秒内加载并获取交互”。大小预算可能会从而消失。例如“将JS限制在简化/压缩后170KB的大小”。
-建立关于KPIs的定期报告。这可以是一份定期发送给业务部门的报告,强调进展和成就。
Andy Still的《网络性能勇士》(Web Performance Warrior)和Lara Hogan的《为性能而设计》(design for Performance)都是很好的书,讨论了如何思考建立性能文化。
性能预算的工具怎样?你可以用Lighthouse CI项目持续集成设置Lighthouse评分预算:
如果您的性能分数低于Lighthouse CI的规定值,可以拒绝那些合并的拉取请求。Lighthouse阈值是另一种基于配置的方法来设置性能预算。
许多性能监控服务支持设置性能预算和预算报警,包括Calibre、Treo、Webdash和SpeedCurve:
我网站teejungle.net的JavaScript性能预算使用SpeedCurve,它支持一些列的预算指标。
接受性能预算可以鼓励团队来认真思考他们从设计阶段的早期到里程碑结束的任何决策的后果。
寻找进一步参考?美国数字服务部门通过为时间到交互等指标设定目标和预算,用Lighthouse记录他们跟踪性能的方法。
下一步..
每个站点都应该可以访问实验室和现场性能数据。
要跟踪JavaScript可能对RUM(真实用户监控)设置中的用户体验产生的影响,网络上有两件事情我建议您检查一下。
现场数据(或RUM - 真实用户监控)是从用户在野外经历的实际页面加载中收集的性能数据。拥有大量JavaScript负载的站点将受益于通过长任务和第一输入延迟测量此工作的主线程。
第一个是长任务 - 一个API,使您能够收集任务(及其属性脚本)的真实世界遥测,持续时间超过50毫秒,可能会阻止主线程。您可以记录这些任务并将其记录回分析。
第一输入延迟(FID)是衡量用户首次与您的站点交互时(即,当他们点击按钮时)到浏览器实际能够响应该交互的时间的度量。FID仍然是一个早期指标,但我们今天有一个可用的折叠,您可以查看。
在这两者之间,您应该能够从真实用户那里获得足够的遥测,以查看他们遇到的JavaScript性能问题。
马塞尔·弗赖比希勒(Marcel Freinbichler)发布了一则面向欧盟用户的关于“今日美国”(USA Today)的病毒推文,用它比正常页面加载快42秒。
众所周知,第三方JavaScript可能会对页面加载性能产生严重影响。虽然这仍然是正确的,但重要的是要承认,今天的许多经验也带来了很多自己的第一方JavaScript。如果我们要快速加载,我们需要消除这个问题的双方可能对用户体验产生的影响。
我们在这里看到了几个常见的漏洞,包括团队在文档头部使用阻止JavaScript来决定向用户显示的A / B测试。或者,将所有A / B测试变体的JS运送下来,即使实际上只使用了一个。
如果这是您目前遇到的主要瓶颈,我们会另外提供有关加载第三方JavaScript的指南。
没有最快,只有更快
性能就像一段旅程,经过了许多小的变更的积累,最终获得大的性能提升。
让你的用户可以尽可能平滑的与你的网站进行交互,运行最少的JavaScript脚本来传递数据。你可以通过逐步递进的方法来慢慢实现这些。最终,你会得到用户的认可。
参考:
Can You Afford It?: Real-world Web Performance Budgets
Progressive Performance
Reducing JavaScript payloads with Tree-shaking
Ouch, your JavaScript hurts!
Fast & Resilient — Why carving out the “fast” path isn’t enough
Web performance optimization with Webpack
JavaScript Start-up Optimization
The Impact Of Page Weight On Load Time
Beyond The Bubble — Real-world Performance
How To Think About Speed Tools
Thinking PRPL
非常感谢Thomas Steiner, Alex Russell, Jeremy Wagner, Patrick Hulce, Tom Ankers 和 Houssein Djirdeh 对文章的贡献,也非常感谢 Pat Meenan 在WebPageTest上的努力, 这里有一篇文章是关于WebPageTest的,有兴趣的话可以看一看,你也可以在Twitter上关注我。
【关于投稿】
如果大家有原创好文投稿,请直接给公号发送留言。
① 留言格式:
【投稿】+《 文章标题》+ 文章链接
② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/
③ 最后请附上您的个人简介哈~
觉得本文对你有帮助?请分享给更多人
关注「前端大全」,提升前端技能
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 双眼皮去肌肉过多
...
2024/5/5 18:19:09 - 做双眼皮可以打美白针
...
2024/4/20 14:33:41 - 合肥双眼皮做出来很浅
...
2024/4/20 14:34:13 - 固定表头和左侧列的表格插件DataTable
2019独角兽企业重金招聘Python工程师标准>>> 由于表格比较长客户要求左侧的部分列要固定,以及头部固定,并有搜索排序功能,找了好久终于找到一个比较好的插件,DataTable,网站:https://datatables.net/downlo…...
2024/4/20 14:34:11 - angularjs ajax datatable,angularJs中datatable实现
angularJs中datatable实现(2014-09-12 13:04:06)标签:angularjsgridhtml引用derective:controller设置:$scope.dtOptions {"bProcessing": true,"bServerSide": true,iDisplayLength: 5,sAjaxSource: http://10.188.192.200:8080/e…...
2024/5/2 8:09:10 - angularJs与 datatable 的结合使用小记
//html部分: <table datatable dt-options"dtOptions" dt-columns"dtColumns" dt-instance"dtInstance" ></table> //js部分 $scope.dtInstance {};$scope.dtOptions DTOptionsBuilder.newOptions().withOption(aja…...
2024/4/20 14:34:09 - 使用datatables绑定数据遇见问题
使用的angular框架,项目比较老,所以版本比较早,为 v1.2.16,绑定数据使用的是datatables来进行数据绑定,版本为V1.10.5 ,在绑定数据的时候遇到了一个问题,目前还没有找到处理的方法,此…...
2024/4/20 14:34:09 - 双眼皮提肌术后一大一小有吗
...
2024/4/20 14:34:08 - 美立方樊院长做双眼皮怎么样
...
2024/4/20 12:59:52 - 使用 Angular 12、ASP.NET Core Web API 和 SQL Server 开发 Web 应用程序
介绍 在本文中,我们将使用最新技术以一种简单易懂的方式从头开始开发一个 Web 应用程序。 后端 ASP.NET Core Web API数据库 SQL Server前端 ANGULAR 12. 首先,我们将创建一个数据库、表并插入一些数据。 其次,我们使用ASP.NET Core W…...
2024/5/5 16:46:13 - 双眼皮提肌图解
...
2024/4/20 14:34:05 - 做了双眼皮很丑
...
2024/4/20 14:34:00 - 双眼皮重睑术
...
2024/4/20 14:33:59 - 【转】AngularJS Eclipse——新手入门【翻译+整理】JS可以提示
本文介绍如何安装和配置 AngularJS Eclipse。AngularJS Eclipse 插件是基于强大的 JavaScript 推断引擎(javascript inference engine)Tern.js, 它由 JavaScript 编写。若在 java 环境下使用该引擎,需要使用 tern.java。它用 node…...
2024/5/4 20:55:16 - 割双眼皮眼睛闭不紧
...
2024/4/28 17:34:11 - 上睑提肌不足能做济南美莱整形做双眼皮怎么样
...
2024/5/3 15:04:59 - ionic4升级到ionic5踩坑记录
ionic3升级到ionic4之后,大半年没升级了,一直用的版本是"ionic/angular": "4.11.7"。 ionic4这个版本总体感觉还行,比较大的一个问题是,页面会飘,如果在ngOnInit里面渲染数据,在ionVi…...
2024/4/20 14:33:55 - 双眼皮提肌贴吧
...
2024/4/20 14:33:54 - 提肌双眼皮失败图
...
2024/4/30 23:49:04 - 割双眼皮做提肌有必要吗
...
2024/4/20 14:34:04
最新文章
- 【架构篇】软件架构的指南针之架构原则
软件架构的设计原则是一组指导思想,帮助我们在设计系统时做出有效的决策,以确保软件的可维护性、可扩展性和可靠性。以下是一些关键的软件架构设计原则: 模块化(Modularity): 将系统分解为功能独立的模块&…...
2024/5/5 20:10:59 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 01背包问题 小明的背包
2.小明的背包1 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> using namespace std; const int N1010;//开始写的105 开小了 样例过了但最后只过了很少一部分 int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;for(int i1;i<n;i){cin>&…...
2024/5/5 8:41:06 - 比nestjs更优雅的ts控制反转策略-依赖查找
一、Cabloy5.0内测预告 Cabloy5.0采用TS对整个全栈框架进行了脱胎换骨般的大重构,并且提供了更加优雅的ts控制反转策略,让我们的业务开发更加快捷顺畅 1. 新旧技术栈对比: 后端前端旧版js、egg2.0、mysqljs、vue2、framework7新版ts、egg3…...
2024/5/4 7:06:50 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57