html - 带骨架的快速 LCP
问题描述
我们目前正在寻找方法来提高我们某些页面上的最大内容绘制 (LCP)分数。根据上面的链接,计算LCP时考虑了以下元素:
<img>
元素<image>
元素内的<svg>
元素<video>
元素(使用海报图片)- 具有通过函数加载的背景图像的元素
url()
(与 CSS 渐变相反) - 包含文本节点或其他内联文本元素子级的块级元素。
为此,我们正在研究利用所谓的“骨架”元素为内容提供占位符的可能性,直到内容完全加载。作为参考,骨架看起来像这样:
这个想法是,如果页面上的单个最大元素(在我们的例子中是图像)首先作为骨架加载,该骨架会在 LCP 值较低的情况下快速呈现,然后可以将其替换为完整内容。
但是,我发现的当前骨架的实现似乎都不符合 LCP 考虑的标准。
- Material UI Skeletons使用 CSS 背景颜色和动画实现。
- Chakra UI Skeletons使用 CSS 背景颜色和动画实现。
- Ant Design Skeletons是用 CSS 背景颜色实现的。
- 骨架元素
SkeletonText
是用 CSS 实现的,可以选择围绕文本占位符进行包装,我相信LCP会考虑使用它。但是,SkeletonImage
是用 CSS 围绕一个 vector 实现的<svg>
,LCP 不会考虑(但这可能会被移动到一个 CSS 中background: url(data:image/svg+xml;base64,...)
)
因此,鉴于骨架的主要实现似乎并没有以一种开箱即用的方式来帮助 LCP,这甚至是一种可行的方法吗?例如,Material UI 团队可能知道一些我们不知道的事情,并决定不以 LCP 为目标,因为骨架不应该成为 LCP 策略的一部分。
解决方案
推荐阅读
- git - 为什么 .git 目录在不同的 GIT_DIR 中!分支?
- sql - 比较两个 select 语句的结果
- android - 使用库 (https://github.com/OmarAflak/Bluetooth-Library) 制作的蓝牙应用程序崩溃
- c - 如何在for循环中输入if语句?
- c# - 如何在不暴露明文的情况下通过网络传输 SecureString(或类似内容)?
- expression - 使用通用表达式语言 (CEL) 在列表中查找值的示例
- python - 将 Python 代码与 MySQL 连接时出现回溯错误
- javascript - 如何将多个元素插入多维数组的同一索引中?
- python - 导入具有相互依赖的类变量的类时如何解决NameError
- assembly - 我正在尝试制作一个将十六进制转换为二进制的程序,但我的程序正在做相反的事情。如何解决这个问题?