ابزارهای گوناگونی برای بررسی یک صفحه وب از دیدگاه های مختلف مانند سئو وجود دارد که همواره با توجه به آپدیت های جدید گوگل و تغییر استانداردها، در حال بروزرسانی و دقیق تر شدن هستند. یکی از ابزارهای معتبر بررسی صفحات وب که توسط گوگل به صورت متن باز توسعه یافته و از سال 2015 در اختیار کاربران قرار گرفته، ابزار Lighthouse گوگل است. این ابزار از اواسط سال 2022 توانایی اندازه گیری پارامترهای مرتبط با Core Web Vitals را دارا شد.
ابزار لایت هاوس در دو نسخه GUI و نسخه CLI (خط فرمان) عرضه شده است. در این مقاله در مورد Lighthouse CLI توضیح داده شده که شامل بخش های زیر است:
- Lighthouse چیست؟
- Lighthouse CLI چیست؟
- روش نصب npm
- روش نصب Lighthouse CLI
- روش استفاده از Lighthouse CLI
- بررسی یک صفحه با لایت هاوس CLI
- رویت گزارش لایت هاوس پس از اتمام بررسی
- تعیین فرمت خروجی گزارش
- تعیین مسیر خروجی گزارش
- تعیین نوع دستگاه و ابعاد viewport
- محدود کردن بررسی لایت هاوس به کتگوری (های) مشخص
- مشاهده آیتم های قابل بررسی در کتگوری های مختلف
- بررسی با audit (های) مشخص
- جلوگیری از بررسی audit (های) مشخص
- بررسی صفحه با مرورگر گوگل کروم headless
- اعمال تغییر در HTTP request header
- ارسال درخواست با یک یوزر ایجنت مشخص
- بررسی دسته ای آدرس ها با Lighthouse CLI
- پرسش های متداول در مورد Lighthouse CLI
Lighthouse چیست؟
Google Lighthouse یک ابزار رایگان و منبع باز است که برای ارزیابی عملکرد وب سایت ها در زمینه هایی مانند سرعت، دسترسی پذیری، قابلیت استفاده و SEO استفاده می شود. این ابزار می تواند به توسعه دهندگان و مالکان وب سایت ها کمک کند تا سایت های خود را بهبود بخشند و تجربه کاربری بهتری را برای بازدیدکنندگان فراهم کنند.
نتیجه گزارش لایت هاوس در پنج کتگوری زیر ارائه می شود که هر کدام از کتگوری ها شامل معیار های مختلفی هستند:
- Performance: ارزیابی های متعددی از دیدگاه پرفورمنس توسط لایت هاوس انجام می شود که تمرکز آنها به صورت کلی بر روی سرعت بارگذاری صفحه وب سایت است. برخی از مواردی که مورد ارزیابی قرار می گیرند عبارتند از First Contentful Paint، First Meaningful Paint، Speed Index، First CPU Idle و Time to Interactive.
- Accessibility: لایت هاوس صفحه را از نظر میزان دسترسی پذیری که شامل موارد متعدد مرتبط با رنگ، اندازه فونت، موارد مرتبط با دستگاه های screen reader مانند لیبل ها، دکمه ها، alt تصاویر و آیتم های مشابه است می شود.
- Best practices: لایت هاوس صفحه را از دیدگاه best practices (بهترین روش) شامل موارد مرتبط با جاوا اسکریپت، HTTPS، ارورهای احتمالی در کنسول مرورگر و aspect ratio تصاویر و موارد متعدد دیگر بررسی می کند.
- SEO: لایت هاوس صفحه را از دیدگاه سئو نیز بررسی می کند. این بررسی شامل مواردی مانند لینک ها، متاها، canonical، robots.txt، عکس ها و موارد متعدد دیگر می شود.
- PWA: لایت هاوس صفحات را از نظر استانداردهای Progressive Web App بررسی می کند.
Lighthouse CLI چیست؟
Lighthouse را میتوان به صورت دستی از طریق DevTools مرورگر گوگل کروم، از طریق سرویس های آنلاین مانند PageSpeed Insights و یا با استفاده از Command Line یا خط فرمان اجرا کرد. به لایت هاوسی که توسط خط فرمان اجرا می شود، Lighthouse CLI که مخفف Lighthouse Command Line Interface است گفته می شود.
تفاوت Lighthouse CLI و Lighthouse CI در چیست؟
همان طور که از نام Lighthouse CLI مشخص است، از آن برای استفاده از لایت هاوس توسط خط فرمان استفاده می شود ولی از Lighthouse CI که مخفف Lighthouse Continuous Integration است برای اتوماسیون و خودکارسازی تست پروژه ها توسط ابزار لایت هاوس استفاده می شود.
می توانید اطلاعات بیشتر در مورد Lighthouse CI را در ریپازیتوری آن در گیت هاب بیابید.
روش نصب npm
برای نصب Lighthouse CLI به Node Package Manager (npm) نیاز است و بنابراین ابتدا باید Node.js نصب شود. در ادامه در خصوص نصب Node.js در سیستم عامل های ویندوز، مک و Ubuntu به تفکیک توضیح داده شده است.
جهت استفاده از Lighthouse CLI به Node.js 18 یا نسخه های جدید تر نیاز است.
جهت نصب Node.js بر روی سیستم عامل مایکروسافت ویندوز، ابتدا فایل Windows Installer (.msi) آن را از سایت اصلی Node.js دانلود کرده و نصب نمایید.
جهت نصب Node.js بر روی سیستم عامل مک، ابتدا فایل macOS Installer (.pkg) آن را از سایت اصلی Node.js دانلود کرده و نصب نمایید.
جهت نصب Node.js بر روی سیستم عامل Ubuntu، به روش زیر عمل کنید:
1- دانلود و ایمپورت Nodesource GPG key
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
2- ایجاد ریپازیتوری deb
NODE_MAJOR=21
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
جهت استفاده از لایت هاوس CLI، مقدار NODE_MAJOR باید دست کم 18 باشد. مقادیر 20 و 21 نیز نسخه های جدید تر Node.js هستند.
3- اجرای آپدیت و نصب Node.js
sudo apt-get update
sudo apt-get install nodejs -y
4- مشاهده نسخه Node.js نصب شده
node --version
پس از نصب Node.js، نوبت به نصب Lighthouse CLI از طریق npm می رسد.
روش نصب Lighthouse CLI
پس از نصب npm که به همراه Node.js نصب می شود، با وارد کردن کامند زیر در ترمینال مک یا Ubuntu و یا در Command Prompt سیستم عامل ویندوز، نسبت به نصب لایت هاوس CLI اقدام کنید.
کلیه کامندهایی که در ادامه توضیح داده شده اند، قابل استفاده در ترمینال لینوکس و مک، و همچنین command prompt ویندوز هستند.
برخی از کامند ها مانند npm install در لینوکس به دسترسی super user نیاز دارند.
npm install -g lighthouse
# or use yarn:
# yarn global add lighthouse
اگر از آپشن g برای نصب global لایت هاوس استفاده کنید، کامندهای لایت هاوس را می توانید در هر دایرکتوری که مد نظرتان بود اجرا کنید.
برای اطمینان از موفقیت آمیز بودن نصب Lighthouse و مشاهده نسخه نصب شده، کامند زیر را در ترمینال وارد کنید.
lighthouse --version
روش استفاده از Lighthouse CLI
برای استفاده از Lighthouse CLI باید مرورگر گوگل کروم روی سیستم نصب شده باشد.
Lighthouse CLI دارای امکانات و قابلیت های زیادی است. برای آشنایی با آپشن های آن، کامند زیر را اجرا کنید.
lighthouse --help
به صورت کلی، کامند lighthouse به صورت زیر قابل استفاده است. در ادامه، تعدادی از کامند هایی که برای متخصصین SEO کاربردی است را مشاهده می کنید.
lighthouse <url> <options>
بررسی یک صفحه با لایت هاوس CLI
در ادامه با کامند lighthouse به همراه تعدادی از آپشن های پرکاربرد آشنا می شوید. جهت بررسی یک صفحه بدون هیچ آپشن خاصی، از کامندهای زیر استفاده کنید. سپس نتیجه آن در آدرسی که در انتهای خط فرمان به شما نمایش داده خواهد شد، با فرمت HTML ذخیره می شود.
lighthouse https://www.webyooz.com/
lighthouse https://www.webyooz.com/gsc-training/
رویت گزارش لایت هاوس پس از اتمام بررسی
در صورتی که از کامند زیر استفاده کنید، نتیجه بررسی لایت هاوس پس از اتمام کار، در مرورگر به شما نمایش داده خواهد شد.
lighthouse <url> --view
نمونه:
lighthouse https://www.webyooz.com/ --view
تعیین فرمت خروجی گزارش لایت هاوس
با استفاده از کامند زیر می توانید خروجی نتیجه لایت هاوس را با سه فرمت html، json و csv ذخیره کنید.
lighthouse <url> --output
lighthouse https://www.webyooz.com/ --output=json
lighthouse https://www.webyooz.com/ --output=html --output=json --output=csv
خروجی نتیجه لایت هاوس به صورت پیشفرض با فرمت HTML است.
امکان گرفتن خروجی نتیجه با بیش از یک فرمت به صورت همزمان وجود دارد.
برای مشاهده گزارش با فرمت json از Lighthouse Viewer استفاده کنید.
تعیین مسیر خروجی گزارش لایت هاوس
ٰهمان طور که در توضیح نصب lighthouse CLI گفته شد، با توجه به استفاده از آپشن g در حین نصب لایت هاوس، کامندهای لایت هاوس را در هر مسیری که اجرا کنید، خروجی نتیجه بررسی در همان مسیر ذخیره خواهد شد. اما اگر قصد داشتید که خروجی نتیجه را در مسیر مشخصی ذخیره کند، می توانید از کامند زیر استفاده نمایید.
lighthouse <url> --output-path
lighthouse https://www.webyooz.com/ --output=html --output-path=/home/admin/Downloads/result.html
lighthouse https://www.webyooz.com/ --output=json --output-path=/home/admin/Downloads/result.json
تعیین نوع دستگاه و ابعاد viewport
بررسی لایت هاوس به صورت پیشفرض با preset موبایل انجام می شود.
lighthouse <url> --preset
lighthouse https://www.webyooz.com/ --preset=desktop
lighthouse https://www.webyooz.com/ --preset=mobile
lighthouse https://www.webyooz.com/ --chrome-flags="--window-size=800,600"
محدود کردن بررسی لایت هاوس به کتگوری (های) مشخص
بررسی لایت هاوس در 5 کتگوری accessibility, best-practices, performance, seo, pwa انجام می شود. این امکان وجود دارد که audit را به کتگوری یا کتگوری های خاصی محدود کرد.
lighthouse <url> --categories [array]
lighthouse https://www.webyooz.com/ --only-categories accessibility
lighthouse https://www.webyooz.com/ --only-categories best-practices,seo
مشاهده آیتم های قابل بررسی در کتگوری های مختلف
lighthouse --list-all-audits
نتیجه کامند بالا به این صورت خواهد بود:
{
"audits": [
"accessibility/accesskeys",
"accessibility/aria-allowed-attr",
"accessibility/aria-allowed-role",
"accessibility/aria-command-name",
"accessibility/aria-dialog-name",
"accessibility/aria-hidden-body",
"accessibility/aria-hidden-focus",
"accessibility/aria-input-field-name",
"accessibility/aria-meter-name",
"accessibility/aria-progressbar-name",
"accessibility/aria-required-attr",
"accessibility/aria-required-children",
"accessibility/aria-required-parent",
"accessibility/aria-roles",
"accessibility/aria-text",
"accessibility/aria-toggle-field-name",
"accessibility/aria-tooltip-name",
"accessibility/aria-treeitem-name",
"accessibility/aria-valid-attr-value",
"accessibility/aria-valid-attr",
"accessibility/button-name",
"accessibility/bypass",
"accessibility/color-contrast",
"accessibility/definition-list",
"accessibility/dlitem",
"accessibility/document-title",
"accessibility/duplicate-id-active",
"accessibility/duplicate-id-aria",
"accessibility/empty-heading",
"accessibility/form-field-multiple-labels",
"accessibility/frame-title",
"accessibility/heading-order",
"accessibility/html-has-lang",
"accessibility/html-lang-valid",
"accessibility/html-xml-lang-mismatch",
"accessibility/identical-links-same-purpose",
"accessibility/image-alt",
"accessibility/image-redundant-alt",
"accessibility/input-button-name",
"accessibility/input-image-alt",
"accessibility/label-content-name-mismatch",
"accessibility/label",
"accessibility/landmark-one-main",
"accessibility/link-in-text-block",
"accessibility/link-name",
"accessibility/list",
"accessibility/listitem",
"accessibility/manual/custom-controls-labels",
"accessibility/manual/custom-controls-roles",
"accessibility/manual/focus-traps",
"accessibility/manual/focusable-controls",
"accessibility/manual/interactive-element-affordance",
"accessibility/manual/logical-tab-order",
"accessibility/manual/managed-focus",
"accessibility/manual/offscreen-content-hidden",
"accessibility/manual/use-landmarks",
"accessibility/manual/visual-order-follows-dom",
"accessibility/meta-refresh",
"accessibility/meta-viewport",
"accessibility/object-alt",
"accessibility/select-name",
"accessibility/skip-link",
"accessibility/tabindex",
"accessibility/table-duplicate-name",
"accessibility/table-fake-caption",
"accessibility/target-size",
"accessibility/td-has-header",
"accessibility/td-headers-attr",
"accessibility/th-has-data-cells",
"accessibility/valid-lang",
"accessibility/video-caption",
"autocomplete",
"bf-cache",
"bootup-time",
"byte-efficiency/duplicated-javascript",
"byte-efficiency/efficient-animated-content",
"byte-efficiency/legacy-javascript",
"byte-efficiency/modern-image-formats",
"byte-efficiency/offscreen-images",
"byte-efficiency/render-blocking-resources",
"byte-efficiency/total-byte-weight",
"byte-efficiency/unminified-css",
"byte-efficiency/unminified-javascript",
"byte-efficiency/unused-css-rules",
"byte-efficiency/unused-javascript",
"byte-efficiency/uses-long-cache-ttl",
"byte-efficiency/uses-optimized-images",
"byte-efficiency/uses-responsive-images-snapshot",
"byte-efficiency/uses-responsive-images",
"byte-efficiency/uses-text-compression",
"content-width",
"critical-request-chains",
"csp-xss",
"deprecations",
"diagnostics",
"dobetterweb/charset",
"dobetterweb/doctype",
"dobetterweb/dom-size",
"dobetterweb/geolocation-on-start",
"dobetterweb/inspector-issues",
"dobetterweb/js-libraries",
"dobetterweb/no-document-write",
"dobetterweb/notification-on-start",
"dobetterweb/paste-preventing-inputs",
"dobetterweb/uses-http2",
"dobetterweb/uses-passive-event-listeners",
"errors-in-console",
"final-screenshot",
"font-display",
"image-aspect-ratio",
"image-size-responsive",
"installable-manifest",
"is-on-https",
"largest-contentful-paint-element",
"layout-shift-elements",
"lcp-lazy-loaded",
"long-tasks",
"main-thread-tasks",
"mainthread-work-breakdown",
"manual/pwa-cross-browser",
"manual/pwa-each-page-has-url",
"manual/pwa-page-transitions",
"maskable-icon",
"metrics",
"metrics/cumulative-layout-shift",
"metrics/first-contentful-paint",
"metrics/first-meaningful-paint",
"metrics/interaction-to-next-paint",
"metrics/interactive",
"metrics/largest-contentful-paint",
"metrics/max-potential-fid",
"metrics/speed-index",
"metrics/total-blocking-time",
"network-requests",
"network-rtt",
"network-server-latency",
"no-unload-listeners",
"non-composited-animations",
"oopif-iframe-test-audit",
"performance-budget",
"predictive-perf",
"preload-fonts",
"prioritize-lcp-image",
"redirects",
"resource-summary",
"screenshot-thumbnails",
"script-elements-test-audit",
"script-treemap-data",
"seo/canonical",
"seo/crawlable-anchors",
"seo/font-size",
"seo/hreflang",
"seo/http-status-code",
"seo/is-crawlable",
"seo/link-text",
"seo/manual/structured-data",
"seo/meta-description",
"seo/plugins",
"seo/robots-txt",
"seo/tap-targets",
"server-response-time",
"splash-screen",
"themed-omnibox",
"third-party-cookies",
"third-party-facades",
"third-party-summary",
"timing-budget",
"unsized-images",
"user-timings",
"uses-rel-preconnect",
"uses-rel-preload",
"valid-source-maps",
"viewport",
"work-during-interaction"
]
}
بررسی با audit (های) مشخص
lighthouse <url> --only-audits [array]
lighthouse https://www.webyooz.com/ --only-audits image-aspect-ratio
lighthouse https://www.webyooz.com/ --only-audits canonical,font-display
جلوگیری از بررسی audit (های) مشخص
lighthouse <url> --skip-audits [array]
lighthouse https://www.webyooz.com/ --skip-audits duplicate-id-aria
lighthouse https://www.webyooz.com/ --skip-audits canonical,font-display
بررسی صفحه با مرورگر گوگل کروم headless
در حین تست یک آدرس با Lighthouse CLI، این ابزار از مرورگر گوگل کروم استفاده می کند و به صورت خودکار آن را باز کرده و پس از بررسی صفحه، مرورگر را خواهد بست. اگر قصد داشتید که از گوگل کروم headless برای بررسی صفحات با لایت هاوس استفاده کنید، از کامند زیر استفاده کنید.
مروگر headless بدون GUI است و در رم اجرا می شود.
lighthouse <url> --chrome-flags="--headless"
lighthouse https://www.webyooz.com/ --chrome-flags="--headless"
اعمال تغییر در HTTP request header
این امکان در Lighthouse CLI وجود دارد که هدرهای دلخواه را در HTTP request header ارسال کنید.
lighthouse <url> --extra-headers
lighthouse https://www.webyooz.com/ --extra-headers "{\"Cookie\":\"name1=value1\", \"name2\":\"value2\"}"
ارسال درخواست با یک یوزر ایجنت مشخص
این امکان در lighthouse CLI وجود دارد که یوزر ایجنت را در HTTP request header تغییر داد.
جهت آشنایی با یوزرایجنت، مطالعه راهنمای جامع User-Agent مفید خواهد بود.
lighthouse <url> --emulatedUserAgent [string]
lighthouse https://www.webyooz.com/ --emulatedUserAgent YOUR_CUSTOM_UA
بررسی دسته ای آدرس ها با Lighthouse CLI
اگر بررسی های زیادی با Lighthouse انجام می دهید و به صورت روزمره این کار را با آدرس های ثابت تکرار می کنید، می توانید از قابلیت batch استفاده کنید که به صورت یکجا، تعدادی آدرس را با لایت هاوس بررسی کنید و نیازی به اجرای کامند به ازای هر آدرس نباشد.
برای بررسی دسته ای تعدادی آدرس، ابتدا یک فایل با فرمت متنی ایجاد کنید که حاوی آدرس های مد نظر باشد. در نمونه زیر، فایل تکست با نام page-list.txt ذخیره شده است.
بررسی دسته ای آدرس ها با لایت هاوس در ویندوز
اگر از سیستم عامل ویندوز استفاده می کنید، با استفاده از یک ادیتور متنی مانند Notepad ++، اطلاعات زیر را با فرمت bat با نامی مانند lighthouse.bat ذخیره کنید.
در صورتی که از Notepad ویندوز برای این کار استفاده کنید، ممکن است فایل bat به درستی کار نکند.
آدرس فایل متنی خودتان که حاوی لیست آدرس ها است و در مرحله قبل ایجاد کردید را با اطلاعاتی که در ادامه وجود دارد جایگزین نمایید.
@Echo Off
FOR /F "delims=" %%a in (C:\Users\YOUR_CUSTOM_PATH\page-list.txt) DO (
ECHO Line is: %%a
lighthouse --quiet --chrome-flags="--headless" %%a
)
در نمونه بالا از FOR و DO جهت ایجاد یک لوپ استفاده شده است.
حال می توانید با باز کردن command prompt در سیستم عامل ویندوز و اجرای فایل lighthouse.bat با استفاده از کامند زیر، همه آدرس هایی که در فایل page-list.txt هستند را با یک کامند و پشت سر هم بررسی کنید.
lighthouse.bat
بررسی دسته ای آدرس ها با لایت هاوس در macOS و Ubuntu
اگر از سیستم عامل macOS یا Ubuntu استفاده می کنید، با استفاده از یک ادیتور متنی، اطلاعات زیر را با فرمت sh با نامی مانند lighthouse.sh ذخیره کنید.
آدرس فایل متنی خودتان که حاوی لیست آدرس ها است و در مرحله قبل ایجاد کردید را با اطلاعاتی که در ادامه وجود دارد جایگزین نمایید.
#!/bin/bash
while IFS='' read -r l || [ -n "$l" ]; do
echo 'Working on report for the site… ' $l
lighthouse --quiet --output=html --chrome-flags="--headless" $l
done < "page-list.txt"
سپس با استفاده از کامند chmod زیر، دسترسی اجرا را به فایل lighthouse.sh بدهید.
chmod +x lighthouse.sh
اکنون می توانید با باز کردن ترمینال در سیستم عامل های مک و اوبنتو و اجرای فایل lighthouse.sh با استفاده از کامند زیر، همه آدرس هایی که در فایل page-list.txt هستند را با یک کامند و پشت سر هم بررسی کنید.
./lighthouse.sh
پرسش های متداول در مورد Lighthouse CLI
Lighthouse CLI قابل نصب روی سیستم عامل های ویندوز، مک و لینوکس است.
لایت هاوس می تواند خروجی نتیجه را با فرمت های HTML، JSON و CSV تولید کند.
بله، این امکان وجود دارد که خروجی audit لایت هاوس CLI با یک، دو یا هر سه فرمت HTML, JSON و CSV صادر و ذخیره شود.
بله، با استفاده از آپشن only-categories امکان محدود کردن audit به کتگوری های خاص مانند SEO، best practice، performance، accessibility و PWA وجود دارد. همچنین امکان محدود کردن سرچ به برخی جزئیات کتگوری ها نیز با استفاده از آپشن های only-audits و skip-audits وجود دارد.
خیر، جهت استفاده از لایت هاوس CLI به مرورگر گوگل کروم نیاز است.
🔗 منبع: Google Chrome GitHub
👍
سرعت لود سایت بی نظیره، واقعا مثال زدنیه، محتوا، رابط کاربری، سرعت، در مجموع فوق العاده عالی و کاربردی