首页 > web前端 > css教程 > 什么是关键渲染路径以及如何优化它

什么是关键渲染路径以及如何优化它

Mary-Kate Olsen
发布: 2024-12-04 19:04:12
原创
339 人浏览过

Qué es el Critical Rendering Path y cómo optimizarlo

什么是关键渲染路径?

关键渲染路径是浏览器将 HTML、CSS 和 JavaScript 转换为屏幕上的像素所经历的阶段序列:

  1. 将 HTML 解析为 DOM(文档对象模型)。
  2. 解析CSSOM(CSS对象模型)中的CSS。
  3. 运行脚本。
  4. 计算屏幕上元素的大小和位置。
  5. 渲染页面。

这些步骤直接影响我们网站的性能,因此如果我们想优化此流程,我们必须考虑一些事情。

构建 DOM

浏览器通过 HTTP 调用接收 HTML。一旦收到它,它就会开始使用该数据构建 DOM。

这个 DOM 是基于节点构建的,每个 HTML 标签就相当于一个节点,HTML 中的子元素也将是 DOM 树中的子节点。

节点数量越多,页面渲染过程完成所需的时间就越长。

CSS对象模型

DOM 包含有关页面内容的所有信息,而 CSSOM 包含有关如何查看该内容的所有信息。

CSS 处理会阻止渲染。也就是说,在完全处理之前,您无法继续后续步骤以最终在屏幕上显示内容。这是因为在 CSS 文件中,上面几行应用的样式可能会被覆盖。

渲染树

一旦我们准备好 DOM 和 CSSOM,它们就会被组合起来形成“渲染树”,它将包含有关将出现在屏幕上的元素的所有必要信息。在这棵树中,诸如所有具有 display: none; 的元素。及其后代或在

标签中找到的所有内容。

布局

在“布局”阶段,定义渲染树元素的大小及其与其他元素的关系。此过程取决于访问网页的屏幕。

如果未指定,元素将默认为父级宽度的 100%,这在某些浏览器中是固定宽度。这就是为什么有必要将该元素包含在

中。来自我们的文档:
<head>
    <meta name="viewport" content="width=device-width" />
</head>
登录后复制
登录后复制
登录后复制

每次用户旋转其移动设备时,布局过程都会再次运行,因为元素及其在屏幕上的排列可能会发生变化。

布局会影响网站的性能,因为节点数量越多,完成此过程所需的时间就越长。缓慢的布局过程除了会导致首页加载速度变慢之外,还会导致一些动画看起来不太好。

页面的绘画

在屏幕上绘制像素是渲染过程的最后一步。这是一个快速的步骤,因为在第一次加载(onload)后,只有那些发生更改的页面区域才会被重新绘制;浏览器已经过优化,以避免不必要地执行此过程。

CRP 优化

这个过程可以通过不同的方式进行优化,但每种情况都是独一无二的,最后重要的是您将最适合您的项目的措施应用于您的项目。

尽快加载关键资源

这个想法是浏览器尽快下载对页面至关重要的资源,例如图像、样式、脚本等,因此建议将这些元素尽可能放在

中;.

即使它们是脚本或更小的样式,它们也可以放入内联标签中。

<head>
    <meta name="viewport" content="width=device-width" />
</head>
登录后复制
登录后复制
登录后复制

另一方面,如果您正在加载的是一个修改 DOM 某些元素的脚本,那么我们的想法是在树及其所有节点构建完毕后加载它。在这些情况下,有必要在 body 标记的末尾加载该脚本。

<head>
    <style>
        .foo {
            color: red;
        }
    </style>
</head>
登录后复制

推迟脚本加载

延迟加载不修改 DOM 的脚本是减少网站加载时间的一个非常好的做法。这可以通过“async”和“defer”属性来完成。

将脚本设置为异步会导致该脚本独立下载和运行,因此不会阻塞渲染过程,并且执行时间是任意的。

具有 defer 属性的脚本将异步下载,但会尊重它在文档中的位置顺序。这也是控制小脚本是否在大脚本之后运行的好方法。

<html>
    <body>
        <!-- My content -->
        <script src="./path/to/my/script.js"></script>
    </body>
</html>
登录后复制

在上面的示例中,三个脚本将异步下载。我们假设最后一个脚本将首先下载,因为它较小。第一个脚本将完全独立下载和运行,既不等待其他元素准备就绪,也不阻塞渲染过程。无论如何,最后一个脚本将在第二个脚本之后执行,因为 defer 属性遵循顺序。

通过媒体查询分离样式

这个想法是只加载屏幕上需要的样式,因此可以帮助优化性能的技术是将页面样式分成不同的文件,具体取决于它们是否要应用于手机、平板电脑、台式机等在 HTML 中,这些文件将使用媒体查询加载,从而避免不必要的样式加载。

<head>
    <meta name="viewport" content="width=device-width" />
</head>
登录后复制
登录后复制
登录后复制

减少资源

虽然看起来很愚蠢,但缩小文件可以极大地帮助提高页面的性能,因为消除空格、注释等可以减少浏览器构建渲染树所需的工作。

结论

这些只是优化此流程时需要记住的一些事项。考虑到这一点,能够编写已经设计用于优化关键渲染路径的高质量代码更加可行。

以上是什么是关键渲染路径以及如何优化它的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板