首页  >  文章  >  web前端  >  获得完美的灯塔分数:综合指南

获得完美的灯塔分数:综合指南

王林
王林原创
2024-07-25 21:16:23842浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn