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中文网其他相关文章!