如何減少 FontAwesome 加載時間並提高網站速度

已發表: 2023-05-16

在本文中,我將向您展示如何通過延遲樣式表的加載來減少 FontAwesome 的加載時間。

Font Awesome 是一個流行的圖標庫,它提供了範圍廣泛的可縮放矢量圖標,可以輕鬆定制並在 Web 開發項目中使用。 當一個網站為圖標使用 font awesome 樣式表時,它通常會顯著降低速度,因為瀏覽器需要從第三方服務器下載字體。 在此過程中,它會阻止首先加載關鍵資產並降低頁面速度洞察分數。

您可能已經看到諸如Reduce unused CSSReduce Render blocking resourcesAvoid chaining critical requests due to font awesome code 這樣的錯誤。

因此,解決方案是要么用 SVG 圖標切換字體超棒的圖標,要么延遲加載它。 用 SVG 圖標完全交換圖標並不總是可能的,但我們可以輕鬆地延遲 font awesome 樣式表的加載並提高網站加載速度。

如何延遲 Blogger 中超棒的字體圖標?

要延遲字體真棒圖標,您需要首先確定您網站上使用的版本。

您可以簡單地在主題代碼中搜索 ( CTRL + F ) font-awesome 並將其從您的主題中刪除。

現在使用下面的腳本並將其替換為正確版本的 font-awesome 的源代碼。

 <script> setTimeout(function() { // Add the Font Awesome stylesheet dynamically var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css'; document.head.appendChild(link); }, 3000); // Delay of 3 seconds </script>

如果你有多個字體很棒的代碼,它同時使用導入和样式表,那麼你需要將下面的腳本與兩個源鏈接一起使用。

 <script> setTimeout(function() { // Add the Font Awesome stylesheet dynamically var link1 = document.createElement('link'); link1.rel = 'stylesheet'; link1.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css'; document.head.appendChild(link1); var link2 = document.createElement('link'); link2.rel = 'stylesheet'; link2.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/fontawesome.min.css'; document.head.appendChild(link2); }, 3000); // Delay of 3000 milliseconds (3 seconds) </script>

現在,在結束正文標記上方使用這些腳本之一併保存代碼。 現在字體很棒的圖標正在延遲加載,或者你可以說延遲了 3 秒。 您可以在上面的腳本中調整此值。

使用 JavaScript 異步加載 Font Awesome 庫

如果您不想延遲超讚字體圖標,那麼您可以使用 JavaScript 異步加載超讚字體庫。 這樣,圖標將在頁面的關鍵內容加載後獲取並呈現。 這不會像延遲方法那樣有效,但肯定比默認方法有所改進。

 <!-- Place this script tag in the head section of your HTML --> <script> // Asynchronous loading of Font Awesome (function() { var link = document.createElement('link'); link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css'; // Replace with your Font Awesome CSS URL link.rel = 'stylesheet'; link.type = 'text/css'; var script = document.getElementsByTagName('script')[0]; script.parentNode.insertBefore(link, script); })(); </script>

在此示例中,Font Awesome CSS 文件是使用 JavaScript 異步加載的。 調整link.href屬性中的 URL 以指向您要使用的 Font Awesome CSS 文件。

通過實施這種方法,您網頁的關鍵內容將首先加載,而無需等待 Font Awesome 圖標。 然後,圖標將異步加載,減少初始加載時間並提高整體網站速度。

高級方法

當然! 另一種延遲加載 Font Awesome 圖標的方法是使用Intersection Observer API 。 這種方法允許您僅在圖標在視口中可見時加載圖標,從而減少初始頁面加載時間。 以下是您可以如何實施它:

刪除上一個方法中提到的默認 Font Awesome 樣式表。

為每個 Font Awesome 圖標添加一個佔位符元素。 這可以是一個簡單的<span><div>元素。

使用 Intersection Observer API 檢測佔位符元素何時在視口中可見。 當元素變得可見時,加載 Font Awesome CSS 並將佔位符替換為實際圖標。

下面是一個使用 JavaScript 的示例實現:

 <!-- Place this script tag in the head section of your HTML --> <script> // Intersection Observer callback function function loadFontAwesome(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { // Load Font Awesome CSS var link = document.createElement('link'); link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css'; // Replace with your Font Awesome CSS URL link.rel = 'stylesheet'; link.type = 'text/css'; document.head.appendChild(link); // Replace placeholder with Font Awesome icon var placeholder = entry.target; var iconClass = placeholder.getAttribute('data-icon'); var iconElement = document.createElement('i'); iconElement.className = iconClass; placeholder.parentNode.replaceChild(iconElement, placeholder); // Stop observing this element observer.unobserve(entry.target); } }); } // Set up Intersection Observer var options = { root: null, rootMargin: '0px', threshold: 0.1 }; var observer = new IntersectionObserver(loadFontAwesome, options); // Start observing the placeholder elements var placeholders = document.querySelectorAll('.font-awesome-placeholder'); placeholders.forEach(function(placeholder) { observer.observe(placeholder); }); </script> <!-- Place the placeholder elements wherever needed --> <p>Some content...</p> <span class="font-awesome-placeholder" data-icon="fas fa-heart"></span> <p>Some more content...</p>

在此示例中,我們使用Intersection Observer API來檢測類font-awesome-placeholder的佔位符元素何時在視口中可見。 當一個元素可見時,我們動態加載 Font Awesome CSS,用實際的圖標元素替換佔位符,並停止觀察該元素。

調整link.href屬性中的 URL 以指向您要使用的 Font Awesome CSS 文件。 此外,修改每個佔位符元素的數據圖標屬性以指定所需的 Font Awesome 圖標類。

通過使用“ Intersection Observer ”API,Font Awesome 圖標將僅在它們即將可見時加載,從而減少頁面的初始加載時間並提高網站速度。

我希望本文能幫助您減少 FontAwesome 加載時間並提高網站加載速度。 通過這種方式,您可以使您的網站核心 web vitals 友好。