在網路發展的早期,第一個網頁是用 XML 的簡化版本(稱為 HTML)建構的。白底黑字。如果您看到帶有藍色下劃線的短語,您就知道可以單擊它。如果它是紫色的,你就知道你已經點擊了它。
生活很簡單。
如今,HTML 通常是任何網頁的最小部分。當瀏覽器請求頁面時,它會取得 HTML,阿爾及利亞電話號碼數據 但隨後必須將其分開並下載資源。
CSS
JavaScript
圖片
字體
…以及提供使用者體驗所需的其他外部文件
消除渲染阻塞資源意味著什麼?
「渲染」是「顯示」的技術術語。在本文中,每當我們談論渲染時,我們指的是螢幕上顯示網站的過程。
考慮到這一點,渲染阻塞就是暫停或減慢該過程的任何事物。
在網路的早期,所有內容都按照 HTML 中編碼的順序載入。如果您的 HEAD 有 5 個 JavaScript 標籤,所有這些標籤都必須在 HEAD 完成之前載入、編譯和執行,那麼這些標籤可能會降低您網站的速度。這就是為什麼我們開始在頁腳中放置 JavaScript 標籤,這樣它們就不會阻止頁面顯示。
渲染阻塞資源的類型
載入到您網站中的每個資源都有可能成為渲染阻塞資源。
如果圖像很大並且需要時間來加載,則它可能是渲染阻塞資源
如果 JavaScript 必須在頁面的 <head> 中執行,那麼它可能是渲染阻塞資源
如果您的 CSS 很大且頁面在全部載入之前無法顯示,那麼它可能是渲染阻塞資源。
如果您從另一個網站載入任何資源,且該網站比您的網站慢,則該資源可能是渲染阻塞資源。
如果您有很多插件,每個插件都有自己的 CSS 和 JavaScript 文件,那麼這些插件可能會阻塞渲染資源。
簡而言之,HTML 中要載入的任何內容都可能是阻塞渲染的資源。
如何測試我的網站是否有阻止渲染的資源?
網路上有很多工具可以向您展示網站的載入方式。我最喜歡的是這兩個:
瀏覽器中的「檢查元素」選項:
我更喜歡一個能夠以「瀑布式」方式顯示頁面載入情況的工具。所有現代瀏覽器都會向您展示瀑布顯示的基本版本。只需右鍵單擊網頁,按一下“檢查”,然後找到“網路”標籤。
完成後,重新載入頁面。你應該看到這樣的東西:
檢查元素網路標籤以消除渲染阻塞資源
上圖右側顯示「網路」標籤。最右邊的小條是「瀑布」顯示。他們告訴我加載任何給定資源需要多長時間。沿著頁面延伸的藍色細線告訴我頁面實際上開始渲染的時間。因此,此頁面上的許多資源會在頁面加載之前加載,這可能不太好。這意味著在這個特定的頁面上,我可能還有一些改進的空間。
當您只是在修修補補時,此視圖很棒,但實際上它告訴您的只是電腦上的載入速度。這可能不是一個真正的指標。例如,我在本地進行所有開發。從同一台電腦上運行的伺服器載入到瀏覽器中的速度有多快根本無法告訴我太多資訊。
網頁測試:
如果您造訪 WebPageTest 並輸入您的 URL,您將獲得更好的現實情況。此外,您可以修改設定以獲得您想要的精確測試。
在大多數情況下我建議您像我一樣做
首先測試桌面
選擇不在您的網站託管位置附近的伺服器
除非您特別需要其他瀏覽器,使用 hubspot 的內容中心建立登陸頁面以吸引更多客戶 否則請選擇 Chrome
您可以在「進階配置」標籤中調整這些設定。
用於消除渲染阻塞資源的網頁測試工具
然後,按一下「開始測試」。
WebPageTest 結果消除了渲染阻塞資源
現在,您將獲得更有用的瀑布顯示。它有點小,迴聲資料庫 所以點擊它,它會帶你到一個更大的版本。它會向您顯示的內容之一是渲染阻塞資源的清單。
WebPageTest 的瀑布顯示可消除渲染阻塞資源
在本例中,我有 32 個渲染阻塞資源。幾乎全部都是 CSS 文件,最後幾本是 JavaScript 文件。
JavaScript 檔案很容易理解,但為什麼 CSS 檔案會阻塞渲染呢?在知道顯示螢幕上的內容所需的所有 CSS 之前,為什麼以及如何輕鬆消除渲 頁面無法顯示。因此,如果您的網站正在加載大量 CSS 文件,並且在列表底部附近有一個用於顯示頁面上第一個元素的 CSS 規則,那麼您的頁面必須等到該規則加載後瀏覽器才能繼續「繪製顯示器」。這就是 CSS 成為渲染阻塞資源的原因。