首页 » 谷歌 » 出色的用户体验始于快速响应的页面,保持高性能并不容易

出色的用户体验始于快速响应的页面,保持高性能并不容易

 

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp

出色的用户体验始于快速加载且响应迅速的页面,并且通常用户不会花费太多时间等待页面加载或与页面交互:根据 的说法,如果页面的加载时间从 1 秒增加到 3 秒秒,​​​但是,在网站中保持高性能并不总是那么容易。访问网站的速度在某种程度上也具有歧视性:因为您可能无法高速访问互联网,甚至无法拥有快速的 CPU。即使您的网站在设计时考虑了可用性,这些因素也会阻止用户充分受益于您网站的功能。

这就是为什么在构建网站时性能至关重要。

性能需要从代码级别构建,以用户为中心的指标,如交互时间 (TTI)、总阻塞时间 (TBT) 和首次输入延迟 (FID) 可以帮助您衡量网站的速度。但是现代网页很重并且越来越大(我们亲切地称之为“网站膨胀”):​​. 许多大型、笨重的网站嵌入了多个第三方脚本,这通常会导致令人沮丧的用户体验。像大多数网站一样,当您需要网站上的这些第三方脚本来运行您的业务时,您将面临巨大的挑战:

如何在不影响重要功能的情况下提高关键性能指标并让用户满意?

负担

众所周知,就是网站臃肿​​​​,而丰富的交互网站体验需要消耗从CPU和GPU到内存和网络的用户资源。除了大图像和视频之外,像素跟踪器、A/B 测试、广告、小部件、CDN 等第三方脚本通常是性能难题中最大的一块。第三方脚本是嵌入你网站的代码,不受开发者直接控制,与网站自己的代码竞争浏览器的主线程,这无疑会延迟内容渲染,让网站感觉呆滞。(这会对​​​,​​​​和​​​产生负面影响并降低用户参与度)

据​​说,第三方脚本可能会导致几个问题,包括:

当一个页面有很多第三方脚本要加载时,它们会阻止或限制网站本身。一方面这对于时间就是金钱的电子商务网站和在线市场来说是一场灾难,但另一方面他们需要这些第三方脚本来运行他们的业务,这一点尤为重要。

对于这一系列问题,将第三方脚本交给后台线程执行是一个潜在的解决方案,让用户在保留脚本的同时提高性能。但是web只能和主线程异步通信,不能直接访问DOM(只有主线程可以)。因此,关键的挑战是为在 Web 中运行的代码提供某种对可以同步执行的 DOM 的访问(即使与主线程的通信必须保持异步)。

正式介绍

是一个轻量级的开源解决方案,通过将第三方脚本执行卸载到后台线程中运行的 Web 来减少由第三方引起的延迟问题。这释放了浏览器的主线程来运行网站自己的代码。它由​​维护,目前处于测试阶段。

同样致力于维护 Qwik 的是 .io,这是一个开源的 HTML 优先、可恢复的 Web 应用程序框架,它使交互式网站能够仅使用 HTML 和 CSS 快速加载,仅在需要时获取。

虽然它不能完全解决由第三方脚本引起的所有瓶颈(在上面的部分中列出),但它确实通过以下方式解决了构建高性能网站的最大挑战:

背后的架构

虽然各种前沿的创新不断加快我们交付给浏览器的代码(包括但不限于压缩、分发、代码拆分、异步、延迟),但只要代码在浏览器中执行,它就受制于单线程语言的事实限制。

作为一个延迟加载库,它的使命是将资源密集型脚本重定向到网络中。为确保各种规模的应用程序都可以继续使用第三方脚本而不会遇到性能问题,请将这些第三方脚本卸载到 Web 上,并使允许或拒绝它们访问主线程 API 是可控的。换句话说,关键渲染路径中的第三方脚本不需要在后台线程中执行,从而腾出浏览器的主线程来执行第一方:负责处理用户输入或绘制屏幕等的那些。影响直观体验事件。

以( )为例,它使用​​.()​​​来收集和发送跟踪数据。一方面,这是一个可以异步运行的后台任务,另一方面,从​​​​​​​​​​​​​​​​​​​​​​ 这允许像这样的脚本在后台执行,允许它们同时访问 DOM,就好像它在主线程上一样。

这个怎么运作

Web 面临的主要挑战是它无法直接访问可从主线程访问的 DOM API,例如​​、​​(实际上包括 BOM)或​​​​等。虽然它可以在两个线程之间创建一个消息系统来代理 DOM 操作,Web 主线程通信的 API 是异步的,这意味着依赖于同步 DOM 操作的第三方脚本将简单地失败。

通过使用代理、​​​​​和同步的​​​XHR​​请求,从 Web 内提供对 DOM API 的同步访问。使用被访问的方法和值(例如​​.title​​​或​​..width​​)创建同步XHR请求,以代理对Web中DOM API的访问。

这些请求被web拦截,然后使用​​​​将API请求异步中继到主线程。通过将每个 DOM API 请求映射到一个同步的​​​XHR​​,Web 将始终暂停执行,直到它响应。最终结果是,从 Web 中的第三方脚本的角度来看谷歌开发者页面,它们都是同步的。

这种方法的好处是您不需要重写或重构您的 3rd 方脚本以使其在 Web 中工作。它们以完整的编码顺序在后台线程上执行。

此外,通过代理所有 DOM API 访问,可以记录每次读取和写入,甚至可以精确限制对某些 DOM API 的访问。

设置

开发人员需要选择加入脚本才能开始,而不是自动将所有第三方脚本移动到 Web ,也就是说,开发人员必须选择要加载和执行的脚本。

​​​npm​​用于从命令行安装。

npm install @builder.io/partytown

接下来谷歌开发者页面,将 type="text/"​​ 属性添加到要从 Web 运行的每个第三方脚本中。

- <script>...</script>
+ <script type="text/partytown">...</script>

​​type="text/"​​仅当特定脚本具有此属性时才启用。这做了两件事:

阻止主线程执行脚本;提供查询选择器,如​​.('')​​。

下一步就是修改​​​​(如果你使用的是React,建议使用​​​​

反应组件)。

以下是​​​​

​​在您的 Next.js 页面中包含此组件的示例。

import Head from "next/head";
import { Partytown } from "@builder.io/partytown/react";

const Home = () => {
return (
<>
<Head>
<title>My App</title>
<script type="text/partytown" src="https://example.com/analytics.js"></script>
<Partytown
</Head>
<main>...</main>
</>
);
};

export default Home;

适用于任何 HTML 页面,不需要特定的框架,但有一些可用的框架,包括 Next.js、Nuxt.js、React 和 . 还为 Pixel、Adobe 和 Tag 等一些第三方服务提供文档和​​​。

设置时,先在几个页面上试用,并使用该措施改进结果,确认所有脚本都正常工作,然后为网站上的所有页面打开它。

实践成果

​​使用Qwik和Qwik的组合成功切网站​​​。这显着提高了性能,即使在移动设备上也是如此,得分为 100⁄100。总出块时间 (TBT) 和交互时间 (TTI) 也显着减少,这是衡量第三方脚本延迟第一方执行所需的时间。

和开发者一起去派对

仍处于测试阶段,所以​​. .io 积极邀请每个人测试并与团队分享他们的想法。用户可以在这里报告问题、请求集成和演示,或贡献代码。还有一个活动的,您可以在其中帮助测试和加入对话。

.io 的目的是为网站制定高性能标准:无需任何配置即可实现具有峰值性能的快速网站。通过其开源解决方案和 Qwik 迈出实现这一理想的第一步,这两者对于让任何人都可以访问具有接近零延迟响应能力的网站的想法至关重要。

原文链接:​​​​

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp

原文链接:出色的用户体验始于快速响应的页面,保持高性能并不容易,转载请注明来源!

0