Lighthouse 是 Google 開發的開源自動化工具,用於提高網頁品質。它會根據各種指標審核您的網站,包括效能、可訪問性、最佳實踐、SEO 和漸進式 Web 應用程式 (PWA) 標準。雖然獲得完美的 Lighthouse 分數具有挑戰性,但透過系統優化是可能的。本指南將引導您完成增強網站並爭取 100% Lighthouse 分數所需的步驟。
表現是 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。
優化您的 JavaScript 程式碼以最大限度地減少執行時間並確保您的網站保持響應能力。
可訪問性確保您的網站可以被盡可能多的人使用,包括殘疾人。
確保文字和背景顏色有足夠的對比以便於閱讀。
使用 ARIA 角色和屬性來提高 Web 應用程式的可存取性。
確保互動元素的邏輯 Tab 鍵順序,以便於使用鍵盤進行導航。
為表單元素新增描述性標籤,以便螢幕閱讀器可以存取它們。
遵循最佳實務有助於確保您的網站安全且效能良好。
透過 HTTPS 為您的網站提供服務,以確保安全的資料傳輸。
確保所有資源都透過 HTTPS 加載,以避免混合內容問題。
定期審核您的程式碼是否有安全性問題並修復任何漏洞。
SEO 有助於提高網站在搜尋引擎結果中的可見度。
包含標題、描述和視口的相關元標記。
使用結構化資料(例如 JSON-LD)幫助搜尋引擎更好地理解您的內容。
確保您的網站適合行動裝置且反應迅速,以滿足各種裝置上的使用者的需求。
PWA 在網路上提供類似本機應用程式的體驗。
建立一個 Web 應用程式清單文件,其中包含使您的網站成為 PWA 所需的所有資訊。
實作服務工作執行緒來快取資產並啟用離線功能。
確保您的網站透過 HTTPS 提供服務,因為這是 PWA 的要求。
使用 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.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 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(); })();
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中文網其他相關文章!