首頁 > web前端 > js教程 > 主體

獲得完美的燈塔分數:綜合指南

王林
發布: 2024-07-25 21:16:23
原創
856 人瀏覽過

Achieving a Perfect Lighthouse Score: A Comprehensive Guide

Lighthouse 是 Google 開發的開源自動化工具,用於提高網頁品質。它會根據各種指標審核您的網站,包括效能、可訪問性、最佳實踐、SEO 和漸進式 Web 應用程式 (PWA) 標準。雖然獲得完美的 Lighthouse 分數具有挑戰性,但透過系統優化是可能的。本指南將引導您完成增強網站並爭取 100% Lighthouse 分數所需的步驟。

1. 效能優化

表現是 Lighthouse 分數的重要組成部分。以下是改進方法:

延遲載入

對圖像和視訊實現延遲加載,以確保它們僅在出現在視口中時加載。

document.addEventListener("DOMContentLoaded", function() {
    let lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));

    if ("IntersectionObserver" in window) {
        let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    let lazyImage = entry.target;
                    lazyImage.src = lazyImage.dataset.src;
                    lazyImage.classList.remove("lazy");
                    lazyImageObserver.unobserve(lazyImage);
                }
            });
        });

        lazyImages.forEach(function(lazyImage) {
            lazyImageObserver.observe(lazyImage);
        });
    } else {
        // Fallback for browsers without IntersectionObserver
        let lazyLoad = function() {
            let scrollTop = window.pageYOffset;
            lazyImages.forEach(function(img) {
                if (img.offsetTop < (window.innerHeight + scrollTop)) {
                    img.src = img.dataset.src;
                    img.classList.remove("lazy");
                }
            });
            if (lazyImages.length == 0) {
                document.removeEventListener("scroll", lazyLoad);
                window.removeEventListener("resize", lazyLoad);
                window.removeEventListener("orientationChange", lazyLoad);
            }
        };

        document.addEventListener("scroll", lazyLoad);
        window.addEventListener("resize", lazyLoad);
        window.addEventListener("orientationChange", lazyLoad);
    }
});
登入後複製

壓縮

對您的資源使用 Brotli 或 gzip 壓縮,以減少其大小並加快載入時間。

縮小化

縮小 JavaScript、CSS 和 HTML 檔案以刪除不必要的字元並減少檔案大小。

快取

透過設定適當的快取標頭來利用瀏覽器緩存,以縮短回訪者的載入時間。

關鍵CSS

內嵌關鍵 CSS 以確保頁面的主要內容快速載入並延遲非關鍵 CSS。

減少 JavaScript 執行時間

優化您的 JavaScript 程式碼以最大限度地減少執行時間並確保您的網站保持響應能力。

2. 輔助功能增強

可訪問性確保您的網站可以被盡可能多的人使用,包括殘疾人。

色彩對比

確保文字和背景顏色有足夠的對比以便於閱讀。

阿利亞角色

使用 ARIA 角色和屬性來提高 Web 應用程式的可存取性。

製表符順序

確保互動元素的邏輯 Tab 鍵順序,以便於使用鍵盤進行導航。

標籤

為表單元素新增描述性標籤,以便螢幕閱讀器可以存取它們。

3. 最佳實踐

遵循最佳實務有助於確保您的網站安全且效能良好。

HTTPS

透過 HTTPS 為您的網站提供服務,以確保安全的資料傳輸。

避免混合內容

確保所有資源都透過 HTTPS 加載,以避免混合內容問題。

安全漏洞審核

定期審核您的程式碼是否有安全性問題並修復任何漏洞。

4.搜尋引擎優化

SEO 有助於提高網站在搜尋引擎結果中的可見度。

元標籤

包含標題、描述和視口的相關元標記。

結構化資料

使用結構化資料(例如 JSON-LD)幫助搜尋引擎更好地理解您的內容。

適合行動裝置

確保您的網站適合行動裝置且反應迅速,以滿足各種裝置上的使用者的需求。

5.漸進式網頁應用程式(PWA)

PWA 在網路上提供類似本機應用程式的體驗。

清單文件

建立一個 Web 應用程式清單文件,其中包含使您的網站成為 PWA 所需的所有資訊。

服務人員

實作服務工作執行緒來快取資產並啟用離線功能。

HTTPS

確保您的網站透過 HTTPS 提供服務,因為這是 PWA 的要求。

測試和迭代

定期進行 Lighthouse 審核

使用 Chrome DevTools 或 Lighthouse CLI 執行審核並解決任何問題。

監控效能

使用 WebPageTest、Google PageSpeed Insights 和 GTmetrix 等工具來監控網站的效能。

持續改進

定期更新和最佳化您的程式碼庫,以保持高效能和良好的使用者體驗。

範例:透過預加載優化資源加載

<head>
    <!-- Preload key CSS -->
    <link rel="preload" href="/styles/main.css" as="style">
    <!-- Preload key JavaScript -->
    <link rel="preload" href="/scripts/main.js" as="script">
</head>
<body>
    <!-- Your content -->
    <script src="/scripts/main.js" defer></script>
    <link href="/styles/main.css" rel="stylesheet">
</body>
登入後複製

範例:實作 Service Worker 進行快取

// service-worker.js
self.addEventListener('install', function(event) {
    event.waitUntil(
        caches.open('my-cache').then(function(cache) {
            return cache.addAll([
                '/',
                '/index.html',
                '/styles/main.css',
                '/scripts/main.js',
                '/images/logo.png'
            ]);
        })
    );
});

self.addEventListener('fetch', function(event) {
    event.respondWith(
        caches.match(event.request).then(function(response) {
            return response || fetch(event.request);
        })
    );
});
登入後複製

以程式設計方式運行 Lighthouse

您可以使用 Lighthouse Node 模組以程式設計方式執行 Lighthouse:

const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

(async () => {
    const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
    const options = {logLevel: 'info', output: 'html', onlyCategories: ['performance'], port: chrome.port};
    const runnerResult = await lighthouse('https://example.com', options);

    // `.report` is the HTML report as a string
    const reportHtml = runnerResult.report;
    console.log(reportHtml);

    // `.lhr` is the Lighthouse Result as a JS object
    console.log('Report is done for', runnerResult.lhr.finalUrl);
    console.log('Performance score was', runnerResult.lhr.categories.performance.score * 100);

    await chrome.kill();
})();
登入後複製

Conclusion

Achieving a perfect Lighthouse score requires consistent effort and a commitment to best practices. By focusing on performance optimization, accessibility enhancements, following best practices, improving SEO, and implementing PWA features, you can significantly improve your Lighthouse score. Regular testing and iteration are key to maintaining a high-quality web application that provides a great user experience.

Remember, while it may be tempting to find shortcuts to improve your Lighthouse score, genuine optimization will result in a better user experience and a more robust web application.

以上是獲得完美的燈塔分數:綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板