not image

Chrome Lighthouse 是一个开源的自动化工具,集成在 Chrome 开发者工具中,主要用于帮助开发者改进网页质量。它通过一系列审计规则,对网页的性能、可访问性、最佳实践、SEO 和 PWA(渐进式网页应用)等方面进行全面分析,并提供优化建议。以下是它的主要功能和用途: --- ### **1. 性能分析(Performance)** - **核心指标评分**:生成 0-100 分的性能评分,基于以下关键指标: - **First Contentful Paint (FCP)**:首次内容绘制时间。 - **Time to Interactive (TTI)**:页面达到完全可交互的时间。 - **Speed Index**:页面内容加载速度的视觉衡量。 - **Largest Contentful Paint (LCP)**:最大内容绘制时间。 - **Cumulative Layout Shift (CLS)**:累计布局偏移(衡量视觉稳定性)。 - **Total Blocking Time (TBT)**:总阻塞时间(衡量主线程阻塞程度)。 - **优化建议**:提供减少加载时间、优化资源加载顺序、压缩资源等具体建议。 --- ### **2. 可访问性(Accessibility)** - **无障碍审计**:检查网页是否符合 **WCAG(Web Content Accessibility Guidelines)** 标准。 - **常见问题检测**: - 元素对比度不足(如文字与背景色对比)。 - 缺失的 ARIA 标签或属性。 - 表单控件缺少标签。 - 非文本内容(如图片)缺少替代文本。 - **优化建议**:帮助开发者提升残障用户(如视障人士)的访问体验。 --- ### **3. 最佳实践(Best Practices)** - **代码与安全规范**:检查是否遵循现代 Web 开发的最佳实践,例如: - 正确使用 HTML、CSS 和 JavaScript。 - 是否启用了 HTTPS。 - 是否避免了已弃用的 API。 - 是否设置了正确的视口(viewport)以支持响应式设计。 - **用户体验建议**:如避免侵入性弹窗、确保页面可缓存等。 --- ### **4. SEO 优化(Search Engine Optimization)** - **搜索引擎友好性检查**: - 页面元标签(如 `` 和 `<meta description>`)是否缺失或重复。 - 是否使用语义化 HTML 标签(如 `<header>`、`<nav>`)。 - 图片是否缺少 `alt` 属性。 - 是否启用结构化数据(如 JSON-LD)。 - **建议**:提升网站在搜索引擎中的排名。 --- ### **5. PWA(Progressive Web App)分析** - **PWA 特性检测**: - 是否注册了 Service Worker 并支持离线访问。 - 是否可添加到主屏幕(Web App Manifest 配置)。 - 是否使用 HTTPS。 - 是否支持渐进增强(Progressive Enhancement)。 - **优化建议**:帮助开发者将网站转化为类原生应用的 PWA。 --- ### **6. 测试环境支持** - **多设备模拟**:模拟移动设备和桌面设备的加载性能和响应式设计。 - **无头模式运行**:可通过命令行(CLI)或集成到 CI/CD 流程中,自动化测试网页质量。 - **自定义配置**:支持自定义审计规则和性能阈值,适配特定项目需求。 --- ### **7. 报告与扩展性** - **生成详细报告**:提供可视化的 HTML 或 JSON 格式报告,包含评分、指标详情和优化步骤。 - **开源扩展**:开发者可自定义审计规则,或通过插件扩展 Lighthouse 功能(例如添加特定业务逻辑的检测)。 --- ### **典型使用场景** - **性能优化**:定位页面加载瓶颈(如大体积资源、未压缩图片、阻塞渲染的脚本)。 - **团队协作**:通过量化评分(如性能分)统一优化目标。 - **自动化测试**:在 CI/CD 中集成 Lighthouse,确保每次代码提交符合质量标准。 - **学习工具**:新手通过审计结果理解 Web 开发的最佳实践。 --- ### **如何使用** 1. **Chrome DevTools**:直接在 Chrome 浏览器中按 `F12` 打开开发者工具,切换到 **Lighthouse** 标签。 2. **命令行工具(CLI)**:通过 `npm install -g lighthouse` 安装后运行。 3. **Node.js 模块**:集成到项目代码中自定义审计逻辑。 4. **Web UI(如 PageSpeed Insights)**:Google 提供的在线工具基于 Lighthouse 核心。 --- 通过 Lighthouse,开发者可以系统性地提升网页质量,覆盖性能、用户体验、可维护性和商业目标(如 SEO)等多个维度。 </p> </div> <div class="bubble-line"></div> <div class="post-footer"> <div class="row"> <div class="col-sm-5 s-tags"> <a href="javascript:;">China-Beijing-Beijing</a> </div> <div class="col-sm-7 text-right"> <div class="content-social"> <a href="javascript:;"><i class="fa fa-facebook"></i><span>Facebook</span></a> <a href="javascript:;"><i class="fa fa-twitter"></i><span>Twitter</span></a> <a href="javascript:;"><i class="fa fa-pinterest"></i><span>Pinterest</span></a> </div> </div> </div> </div> </div> </article> <article class="content-item"> <div class="entry-media"> <div class="post-title comment-title"> <h3>评论区:</h3> </div> <div class="bubble-line"></div> <div id="comments" class="comments-area"> <div class="comments-wrapper"> <ol class="comment-list"> <li id="comment-5"> </li><!-- #comment-## --> </ol><!-- .comment-list --> </div> </div> </div> </article> <article class="content-item"> <div class="entry-media"> <div class="post-title"> <h2>评论:</h2> </div> <div class="bubble-line"></div> <div class="post-content comment"> <form action="/yes4/" method="post" enctype="multipart/form-data"> <input type='hidden' name='csrfmiddlewaretoken' value='mqe6XE3X3ZJlpAX0CG3HUA0anIThsxH9VxWr0mtNVhHhNk30WwExbRWiiFNLXXZk' /> <div class="comment-form "> <p class="input-name">请输入内容:</p> <textarea placeholder="" name="content"></textarea> </div> <input name="post_id" value="2101" type="hidden"> <input class="title2" type="text" name="title" placeholder="请输入匿名昵称" style="line-height: 30px;"> <!--请上传头像照片:<input type="file" name="pic" placeholder="请上传头像照片"/>--> <input name="submit" type="submit" class="button" value="发表" /> </form> </div> </div> </article> </div> <div class="col-sm-4 sidebar"> <div class="widget"> <h3 class="widget-title">关于我:</h3> <div class="bubble-line"></div> <div class="widget-content"> <img src="/static/det/images/widget/about.jpg" alt="not image"> <p>Hello I’m Jenny Kurto author of Letter town blog. This is my personal space which is like to share others. And i’m living New York city working and blogging.</p> <div class="widget-more"> <a href="javascript:;" class="button">More story</a> </div> </div> </div> <div class="widget"> <h3 class="widget-title">热门试题:</h3> <div class="bubble-line"></div> <div class="widget-content"> <ul> <li> <a href="javascript:;">Video & music</a> </li> <li> <a href="javascript:;">Fashion</a> </li> <li> <a href="javascript:;">Travel & hiking</a> </li> <li> <a href="javascript:;">Photography</a> </li> <li> <a href="javascript:;">food recipe</a> </li> <li> <a href="javascript:;">do it yourself</a> </li> </ul> </div> </div> <div class="widget"> <h3 class="widget-title">我的热门:</h3> <div class="bubble-line"></div> <div class="widget-content"> <div class="widget-recent"> <img src="/static/det/images/widget/resent.jpg" alt="not image"> <h4><a href="javascript:;">Meet my workspace</a> </h4> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry. </p> </div> <div class="widget-recent"> <img src="/static/det/images/widget/resent1.jpg" alt="not image"> <h4><a href="javascript:;">This is how to unique idea born</a> </h4> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry. </p> </div> <div class="widget-recent last"> <img src="/static/det/images/content/photos4.jpg" alt="not image"> <h4><a href="javascript:;">Only you will choose your life.</a></h4> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry. </p> </div> </div> </div> <div class="widget"> <h3 class="widget-title"> <a href="javascript:;">我的标签:</a></h3> <div class="bubble-line"></div> <div class="widget-content"> <div class="widget-tags"> <a href="javascript:;">clean</a> <a href="javascript:;">minimal</a> <a href="javascript:;">cloudy</a> <a href="javascript:;">video</a> <a href="javascript:;">template</a> <a href="javascript:;">fashion</a> <a href="javascript:;">bloggers</a> <a href="javascript:;">carefully</a> <a href="javascript:;">handcrafted</a> <a href="javascript:;">print</a> <a href="javascript:;">psd</a> <a href="javascript:;">music</a> <a href="javascript:;">food recipe</a> </div> </div> </div> <div class="widget-sub social"> <ul> <li> <a class="social-widget" href="javascript:;"> <i class="fa fa-facebook"> </i><span> share</span></a> <div> 211</div> </li> <li> <a class="social-widget" href="javascript:;"> <i class="fa fa-twitter"></i> <span>follow</span></a> <div> 121</div> </li> <li> <a class="social-widget" href="javascript:;"> <i class="fa fa-google-plus"></i> <span> share </span></a> <div> 11</div> </li> <li> <a class="social-widget" href="javascript:;"> <i class="fa fa-instagram"></i> <span> follow </span></a> <div>65</div> </li> </ul> </div> </div> </div> </div> </section> </div> <footer id="footer"> <div class="footer-slide"> <div class="swiper-container"> </div> </footer> <script type="text/template" id="tpl-bubble-left"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 30" enable-background="new 0 0 15 30" xml:space="preserve"> <path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#000000" stroke-miterlimit="10" d="M0,29.4c0,0,7.5,0,7.5-7c0,0,7,0,7-7c0-0.1,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2c0-7-7-7-7-7c0-7-7.5-7-7.5-7"/> </svg> </script> <script type="text/template" id="tpl-bubble-right"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 30" enable-background="new 0 0 15 30" xml:space="preserve"> <path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#000000" stroke-miterlimit="10" d="M15,29.4c0,0-7.5,0-7.5-7c0,0-7,0-7-7c0-0.1,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2c0-7,7-7,7-7c0-7,7.5-7,7.5-7"/> </svg> </script> <!-- Include jQuery and Scripts --> <script type="text/javascript" src="/static/det/js/jquery.min.js"></script> <script type="text/javascript" src="/static/det/vendors/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript" src="/static/det/vendors/jquery.waypoints.min.js"></script> <script type="text/javascript" src="/static/det/vendors/isotope.pkgd.min.js"></script> <!-- Swiper --> <script type="text/javascript" src="/static/det/vendors/swiper/js/swiper.min.js"></script> <!-- Magnific-popup --> <script type="text/javascript" src="/static/det/js/scripts.js"></script> <div id="footer" class="two-s-footer clearfix"> <div class="footer-box"> <div class="container"> <div class="social-footer"><a id="tooltip-f-weixin" class="wxii" href="javascript:void(0);"><i class="icon-wechat"></i></a></div> <div class="nav-footer"><a href="/">首页</a> <a href="#">热点资讯</a> <a href="/forum/">技术交流</a> <a href="/list/">热门文章</a></div> <div class="copyright-footer"> <p>Copyright © 2018 http://www.pgnice.com <a href="http://www.pgnice.com" target="_blank">pgnice</a></p> <p><img src="/static/images/webLog.png" alt=""><a href="http://www.beian.miit.gov.cn" target="_blank">辽ICP备19000168号-1</a></p> </div> <div class="links-footer"><span>友情链接:</span> <strong> <center> <span id="showsectime" style="color:#FF0000;"></span> <script type="text/javascript"> function NewDate(str) { str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); return date; } function showsectime() { var birthDay =NewDate("2018-8-10"); var today=new Date(); var timeold=today.getTime()-birthDay.getTime(); var sectimeold=timeold/1000 var secondsold=Math.floor(sectimeold); var msPerDay=24*60*60*1000; var e_daysold=timeold/msPerDay; var daysold=Math.floor(e_daysold); var e_hrsold=(daysold-e_daysold)*-24; var hrsold=Math.floor(e_hrsold); var e_minsold=(hrsold-e_hrsold)*-60; var minsold=Math.floor((hrsold-e_hrsold)*-60); var seconds=Math.floor((minsold-e_minsold)*-60).toString(); document.getElementById("showsectime").innerHTML = "本站已安全运行"+daysold+"天"+hrsold+"小时"+minsold+"分"+seconds+"秒"; setTimeout(showsectime, 1000); }showsectime(); </script> <strong> <ml> </ml></center> </strong> <a href="#" target="_blank">微信小程序-搞笑笑拍</a> <a href="http://www.jikedaohang.com/" target="_blank">极客导航</a> <a href="http://119.29.10.12:80" target="_blank">0418便民网</a> </div> </div> </div> <div class="search-form"> <form method="get" action="#" role="search"> <div class="search-form-inner"> <div class="search-form-box"> <input class="form-search" type="text" name="s" placeholder="键入搜索关键词"> <button type="submit" id="btn-search"><i class="icon-search"></i></button> </div> <div class="search-commend"> <h4>大家都在搜</h4> <ul> <li><a href="#">wordpress主题</a></li> <li><a href="#">个人博客模板</a></li> <li><a href="#">网页模板</a></li> </ul> </div> </div> </form> <div class="close-search"><span class="close-top"></span> <span class="close-bottom"></span></div> </div> <div class="f-weixin-dropdown"> <div class="tooltip-weixin-inner"> </div> <div class="close-weixin"><span class="close-top"></span> <span class="close-bottom"></span></div> </div> <script type='text/javascript'> /* <![CDATA[ */ var suxingme_url = {"slidestyle": "index_slide_sytle_2", "wow": "1", "sideroll": "1", "duang": "1"}; /* ]]> */ </script> <script type='text/javascript' src='/static/js/plugins.min.js'></script> <script type='text/javascript' src='/static/js/lmlblog.js'></script> <script type='text/javascript' src='/static/js/owl.carousel.min.js'></script> <script type='text/javascript' src='/static/js/wow.min.js'></script> <script src="/static/js/custom.js"></script> <script src="/static/js/bootstrap.min.js"></script> <script type="text/javascript" src="/static/js/jquery.mixitup.min.js"></script> </body> </html>