感知性能

感知性能 是对网站性能、响应能力和可靠性的主观衡量。换句话说,就是网站对用户的速度感。它比实际运行速度更难量化和衡量,但可能更重要。

本文简要介绍了影响感知性能的因素,以及一些用于评估和改善感知的工具。

先决条件 已安装的基本软件,以及对 客户端 Web 技术 的基本了解。
目标 了解用户对 Web 性能的感知。

概述

页面加载和响应用户交互的速度(以及流畅度)的感知,甚至比实际获取资源所需的时间更重要。虽然你可能无法实际让你的网站运行得更快,但你完全可以改善它对用户的“感觉”速度。

提高感知性能的一般规则是,通常最好提供快速响应和定期状态更新,而不是让用户等待操作完全完成(在提供任何信息之前)。例如,在加载页面时,最好在文本到达时显示文本,而不是等待所有图像和其他资源加载完成。即使内容没有完全下载,用户也可以看到正在发生的事情,并可以开始与内容进行交互。

注意: 对于积极参与、分心或娱乐的用户来说,时间似乎比被动等待发生的事情的用户流逝得更快。尽可能积极地吸引和告知正在等待任务完成的用户。

类似地,最好在用户点击链接执行长时间运行的操作时立即显示“加载动画”。虽然这不会改变完成操作所需的时间,但网站感觉更具响应性,用户也知道它正在处理一些有用的事情。

性能指标

没有单一指标或测试可以运行在网站上,来评估用户“感觉”如何。然而,有一些指标可以作为“有用指标”。

首次绘制

首次绘制操作开始的时间。请注意,此更改可能不可见;它可以是一个简单的背景颜色更新,甚至更不显眼。

首次内容绘制 (FCP)

首次重要渲染(例如文本、前景或背景图像、画布或 SVG 等)的时间。请注意,此内容不一定是实用的或有意义的。

首次有意义绘制 (FMP)

有用的内容渲染到屏幕上的时间。

最大内容绘制 (LCP)

在视口中可见的最大内容元素的渲染时间。

速度指数

衡量可见屏幕上的像素平均绘制时间。

可交互时间

UI 可用于用户交互的时间(即加载过程的最后一个 长任务 完成)。

提高性能

以下是一些帮助改善感知性能的技巧和窍门。

最小化初始加载

为了提高感知性能,请最小化原始页面加载。换句话说,首先下载用户将立即与之交互的内容,并在“后台”下载其余内容。下载内容的总量实际上可能会增加,但用户只需要等待一小部分内容,因此下载速度感觉更快。

将交互功能与内容分离,并加载在初始加载时可见的文本、样式和图像。延迟或延迟加载初始页面加载时未使用或不可见的图像或脚本。此外,您应该优化加载的资产。图像和视频应以最佳格式、压缩并以正确的大小提供。

防止内容跳动和其他重排

导致内容被向下推或跳到不同位置的图像或其他资产,例如第三方广告的加载,会让页面感觉仍在加载,这对感知性能不利。内容重排尤其不利于用户体验,尤其是在没有用户交互的情况下发生的。如果某些资产的加载速度比其他资产慢,并且元素在其他内容已经绘制到屏幕上后才加载,请提前规划并在布局中为它们留出空间,以避免内容跳动或调整大小,尤其是在网站变为可交互之后。

避免字体文件延迟

字体选择很重要。选择合适的字体可以极大地改善用户体验。从感知性能的角度来看,“次优字体导入”会导致文本样式化或回退到其他字体时出现闪烁。

使回退字体具有相同的尺寸和粗细,以便在字体加载时页面变化不那么明显。

交互元素具有交互性

确保可见的交互元素始终具有交互性和响应性。如果输入元素可见,用户应该能够在没有延迟的情况下与它们进行交互。用户会在响应时间超过 50 毫秒时感到卡顿。当内容重绘速度低于 16.67 毫秒(或每秒 60 帧)或以不均匀的间隔重绘时,他们会感到页面运行不佳。

使诸如自动补全之类的功能成为渐进增强:使用 CSS 显示输入模态框,使用 JS 添加自动补全功能(如果可用)。

使任务启动器看起来更具交互性

keydown 上发出内容请求,而不是等待 keyup,可以将内容的感知加载时间缩短 200 毫秒。在 keyup 事件中添加一个有趣但不太突出的 200 毫秒动画可以减少另外 200 毫秒的感知加载时间。你没有节省 400 毫秒的时间,但用户不会感觉到他们在等待内容,直到——好吧,直到他们真的在等待内容。

结论

通过减少用户等待加载有用内容的时间,并保持网站响应性和参与度,用户会感觉网站性能更好——即使实际加载资源所需的时间保持不变。