首頁 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板