بهینه‌سازی Web Vitals بااستفاده از Lighthouse

یافتن فرصت‌هایی برای بهبود تجربه کاربری با ابزار وب Chrome.

تاریخ انتشار: ۱۱ مه ۲۰۲۱

امروز، ویژگی‌های ابزار جدیدی را در Lighthouse،‏ PageSpeed، و DevTools پوشش خواهیم داد تا به شناسایی نحوه بهبود سایت شما در Web Vitals کمک کنیم.

برای یادآوری ابزارها، Lighthouse یک ابزار خودکارشده متن‌باز برای بهبود کیفیت صفحه‌های وب است. می‌توانید آن را در مجموعه ابزارهای اشکال‌زدایی Chrome DevTools پیدا کنید و آن را برای هر صفحه وب، عمومی یا نیازمند اصالت‌سنجی، اجرا کنید. همچنین می‌توانید Lighthouse را در PageSpeed Insights، CI و WebPageTest پیدا کنید.

Lighthouse 7.x شامل ویژگی‌های جدیدی مانند نماگرفت‌های عنصر است، برای بازرسی بصری آسان‌تر بخش‌هایی از واسط کاربر شما که بر سنجه‌های تجربه کاربر تأثیر می‌گذارند (مثلاً کدام گره‌ها در تغییر چیدمان مشارکت دارند).

همچنین پشتیبانی از نماگرفت‌های عنصر را در PageSpeed Insights ارائه کرده‌ایم که راهی برای شناسایی آسان‌تر مشکلات در اجراهای عملکردی یک‌باره صفحه‌ها فراهم می‌کند.

نماگرفت‌های عنصر که گره DOM را که در تغییر چیدمان صفحه نقش دارد برجسته می‌کند

سنجش معیارهای کلیدی اصلی وب

Lighthouse می‌تواند سنجه‌های «معیارهای کلیدی اصلی وب» ازجمله بزرگ‌ترین نقاشی دارای محتوا، تغییر چیدمان تجمعی و کل زمان مسدود شدن (یک پراکسی آزمایشگاهی برای تأخیر اولین ورودی) را به‌صورت ترکیبی اندازه‌گیری کند. این سنجه‌ها نشان‌دهنده بارگیری، پایداری چیدمان، و آمادگی تعامل است. سنجه‌های دیگری مثل اولین رنگ محتوایی که در آینده «معیارهای کلیدی اصلی وب» برجسته شده‌اند نیز وجود دارد.

بخش «سنجه‌ها» در گزارش Lighthouse شامل نسخه‌های آزمایشگاهی این سنجه‌ها است. می‌توانید از این بخش به‌عنوان نمای خلاصه برای جنبه‌هایی از تجربه کاربری که به توجه شما نیاز دارند استفاده کنید.

سنجه‌های عملکرد Lighthouse
مسیر «معیارهای کلیدی وب» در پانل عملکرد devtools
گزینه جدید «معیارهای کلیدی وب» در پانل «عملکرد» DevTools قطعه‌ای را نمایش می‌دهد که لحظات سنجه را برجسته می‌کند، مانند «تغییر چیدمان» (LS) که در بالا نشان داده شده است.

سنجه‌های فیلد، مانند سنجه‌هایی که در Chrome UX Report یا RUM یافت می‌شوند، این محدودیت را ندارند و مکمل ارزشمندی برای داده‌های آزمایشگاهی هستند زیرا تجربه کاربران واقعی را منعکس می‌کنند. داده‌های میدانی نمی‌توانند اطلاعات تشخیصی‌ای را که در آزمایشگاه دریافت می‌کنید ارائه دهند، بنابراین این دو مکمل یکدیگرند.

شناسایی جاهایی که می‌توانید «معیارهای کلیدی وب» را بهبود دهید

شناسایی عنصر «بزرگ‌ترین نقاشی دارای محتوا»

LCP سنجه‌ای برای تجربه بار کردن درک‌شده است. این سنجه نقطه‌ای را درطول بار شدن صفحه علامت‌گذاری می‌کند که محتوای اصلی–یا «بزرگ‌ترین» محتوا–بار شده و برای کاربر قابل‌مشاهده است.

Lighthouse ممیزی «بزرگ‌ترین عنصر نقاشی دارای محتوا» دارد که مشخص می‌کند کدام عنصر بزرگ‌ترین نقاشی دارای محتوا بوده است. نگه داشتن نشانگر روی عنصر، آن را در پنجره اصلی مرورگر برجسته می‌کند.

عنصر «بزرگ‌ترین نقاشی دارای محتوا»

اگر این عنصر تصویر باشد، این اطلاعات نکته مفیدی است که ممکن است بخواهید بار کردن این تصویر را بهینه‌سازی کنید. Lighthouse شامل تعدادی ممیزی بهینه‌سازی تصویر است تا به شما کمک کند بفهمید آیا تصاویرتان می‌توانند بهتر فشرده شوند، اندازه آن‌ها تغییر کند، یا در قالب تصویر مدرن بهینه‌تری ارائه شوند.

ممیزی اندازه مناسب تصاویر

همچنین ممکن است LCP Bookmarklet از Annie Sullivan را برای شناسایی سریع عنصر LCP با مستطیل قرمز تنها با یک کلیک مفید بیابید.

برجسته کردن عنصر LCP با bookmarklet

برای بهبود LCP، تصاویر دیرکشف‌شده را پیش‌بار کنید

برای بهبود «بزرگ‌ترین نقاشی دارای محتوا»، اگر مرورگر نگاره‌های اصلی مهم را دیر پیدا می‌کند، آن‌ها را پیش‌بارگیری کنید. اگر لازم باشد بسته جاوا اسکریپت قبل‌از قابل‌شناسایی شدن تصویر بار شود، ممکن است شناسایی دیرهنگام اتفاق بیفتد.

پیش‌بار کردن بزرگ‌ترین تصویر نقاشی دارای محتوا

چند سؤال رایج درباره پیش‌بارگیری تصاویر LCP از ما پرسیده می‌شود که شاید ارزش داشته باشد به‌طور خلاصه به آن‌ها بپردازیم.

آیا می‌توانید تصاویر واکنش‌گرا را پیش‌بارگیری کنید؟ بله ضربه بزنید. فرض کنید یک نگاره اصلی واکنش‌گرا داریم که بااستفاده از srcset و sizes در زیر مشخص شده است:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

به‌لطف مشخصه‌های imagesrcset و imagesizes که به مشخصه link اضافه شده‌اند، می‌توانیم تصویر واکنش‌گرا را بااستفاده از همان منطق انتخاب تصویر که توسط srcset و sizes استفاده می‌شود پیش‌بار کنیم:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

آیا ممیزی فرصت‌های پیش‌بارگیری را نیز درصورتی‌که تصویر LCP ازطریق پس‌زمینه CSS تعریف شده باشد، برجسته می‌کند؟ بله.

هر تصویری که به‌عنوان تصویر LCP پرچم‌گذاری شده باشد، چه ازطریق پس‌زمینه CSS یا <img>، اگر در عمق آبشاری سه یا بیشتر کشف شود، نامزد است.

بارگیری کُند تصاویر خارج‌از صفحه و اجتناب از این کار برای LCP

تصاویر خارج از صفحه که برای تجربه اولیه کاربر ضروری نیستند می‌توانند بارگیری کُند شوند. این تکنیکی است که بارگیری تصویر را تا زمانی که کاربر به نزدیکی آن پیمایش کند به‌تأخیر می‌اندازد، که می‌تواند رقابت شبکه برای دارایی‌های حیاتی را کاهش دهد و در برخی موارد «بزرگ‌ترین نقاشی دارای محتوا» را بهبود بخشد. ممیزی «به‌تعویق انداختن تصاویر خارج‌از صفحه» می‌تواند در اینجا کمک کند:

به‌تعویق انداختن تصاویر خارج‌از صفحه

تصاویر مهم بالای خط تا، مثل تصویر «بزرگ‌ترین نقاشی دارای محتوا»، نباید به‌صورت بارکردن کُند بار شوند. انجام این کار می‌تواند بار کردن تصویر LCP را به‌تأخیر بیندازد. Lighthouse ازطریق ممیزی «تصویر بزرگ‌ترین نقاشی دارای محتوا به‌صورت کُند بار شده است» برجسته می‌کند که آیا تصویر LCP به‌صورت کُند بار شده است یا نه:

از بارگیری کُند تصویرهای LCP اجتناب کنید

شناسایی مشارکت‌های CLS

«تغییر چیدمان تجمعی» سنجه‌ای برای پایداری بصری است. این معیار میزان جابه‌جایی بصری محتوای صفحه را اندازه‌گیری می‌کند. Lighthouse ممیزی‌ای برای اشکال‌زدایی CLS دارد که «اجتناب از تغییرات بزرگ چیدمان» نامیده می‌شود.

این ممیزی عناصر DOM را که بیشترین سهم را در تغییرات صفحه دارند برجسته می‌کند. در ستون «عنصر» در سمت راست، فهرست این عناصر DOM را خواهید دید و در سمت چپ، سهم کلی CLS آن‌ها را مشاهده خواهید کرد.

ممیزی «اجتناب از تغییرات بزرگ چیدمان» در Lighthouse که گره‌های DOM مربوطه را که در CLS نقش دارند برجسته می‌کند

به‌لطف ویژگی جدید Lighthouse Element Screenshots، هم می‌توانیم پیش‌نمایش تصویری عناصر کلیدی ذکرشده در ممیزی را ببینیم و هم می‌توانیم برای نمای واضح‌تر، روی آن کلیک کنیم تا بزرگ‌نمایی شود:

با کلیک کردن روی نماگرفت «عنصر»، آن نماگرفت ازهم باز می‌شود

برای CLS پس‌از بارگیری، به‌طور مداوم تجسم کردن با مستطیل‌ها می‌تواند ارزشمند باشد که کدام عناصر بیشترین سهم را در CLS داشته‌اند. این ویژگی را در ابزارهای طرف سوم مانند داشبورد «معیارهای کلیدی اصلی وب» SpeedCurve پیدا خواهید کرد و من دوست دارم از تولیدکننده GIF تغییر چیدمان Defaced برای آن استفاده کنم:

تولیدکننده تغییر چیدمان که تغییرات را برجسته می‌کند

برای نمای کلی سایت از مشکلات تغییر چیدمان، من از گزارش Core Web Vitals کنسول جستجو بسیار استفاده می‌کنم. این به من امکان می‌دهد انواع صفحه‌هایی را در سایتم ببینم که CLS بالایی دارند (در این مورد به من کمک می‌کند خودم تشخیص دهم که باید وقتم را روی کدام بخش‌های الگو بگذارم):

«کنسول جستجو» مشکلات CLS را نمایش می‌دهد

شناسایی CLS از تصاویر بدون ابعاد

برای محدود کردن «تغییر چیدمان تجمعی» ناشی‌از تصاویر بدون ابعاد، ویژگی‌های اندازه عرض و ارتفاع را در عناصر تصویر و ویدیو خود بگنجانید. این رویکرد تضمین می‌کند که مرورگر می‌تواند مقدار مناسبی از فضا را در سند اختصاص دهد درحالی‌که تصویر درحال بارگیری است.

بازرسی عناصر تصویر بدون عرض و ارتفاع صریح

برای مطالعه مطلبی خوب درباره اهمیت فکر کردن به ابعاد و نسبت ابعادی تصویر، به Setting Height And Width On Images Is Important Again مراجعه کنید.

شناسایی CLS از آگهی‌ها

Publisher Ads for Lighthouse به شما امکان می‌دهد فرصت‌هایی را برای بهبود تجربه بار کردن آگهی‌ها در صفحه‌تان پیدا کنید، ازجمله مشارکت‌ها در تغییر چیدمان و کارهای طولانی که ممکن است زمان قابل‌استفاده شدن صفحه‌تان را برای کاربران به‌تأخیر بیندازد. در Lighthouse، می‌توانید این ویژگی را ازطریق «افزونه‌های انجمن» فعال کنید.

ممیزی‌های مرتبط با آگهی‌ها که فرصت‌های کاهش زمان درخواست و تغییر چیدمان را برجسته می‌کنند

به‌یاد داشته باشید که آگهی‌ها یکی از بزرگ‌ترین عوامل تغییر چیدمان در وب هستند. مهم است که:

  • هنگام قرار دادن آگهی‌های غیرچسبان نزدیک بالای ناحیه نمایش دقت کنید
  • با رزرو کردن بزرگ‌ترین اندازه ممکن برای جایگاه آگهی، جابه‌جایی‌ها را حذف کنید

اجتناب از پویانمایی‌های غیرمرکب

پویانمایی‌های غیرترکیبی می‌توانند در دستگاه‌های رده‌پایین‌تر به‌صورت لرزان ظاهر شوند، اگر کارهای سنگین جاوا اسکریپت رشته اصلی را مشغول نگه دارند. چنین پویانمایی‌هایی می‌توانند باعث جابه‌جایی چیدمان شوند.

اگر Chrome متوجه شود که پویانمایی‌ای نمی‌تواند ترکیب شود، آن را به ردگیری DevTools گزارش می‌دهد Lighthouse آن را می‌خواند و به آن اجازه می‌دهد تا عناصری را که پویانمایی دارند و ترکیب نشده‌اند و دلیل آن را فهرست کند. می‌توانید این موارد را در ممیزی اجتناب از پویانمایی‌های ترکیب‌نشده پیدا کنید.

بازرسی برای اجتناب از پویانمایی‌های غیرمرکب

اشکال‌زدایی تأخیر ورودی اول / مجموع زمان مسدودسازی / تکالیف طولانی

«اولین ورودی» مدت‌زمان بین اولین تعامل کاربر با صفحه (مثلاً وقتی روی پیوندی کلیک می‌کند، روی دکمه‌ای تک‌ضرب می‌زند، یا از کنترل سفارشی مجهز به جاوا اسکریپت استفاده می‌کند) و زمانی را که مرورگر واقعاً می‌تواند پردازش گرداننده‌های رویداد را در پاسخ به آن تعامل شروع کند می‌سنجد. «تکالیف» طولانی جاوا اسکریپت می‌تواند بر این سنجه و پروکسی این سنجه، یعنی «کل زمان مسدودسازی»، تأثیر بگذارد.

ممیزی برای اجتناب از تکالیف طولانی رشته اصلی

Lighthouse شامل ممیزی اجتناب از تکالیف طولانی رشته اصلی است که طولانی‌ترین تکالیف را در رشته اصلی فهرست می‌کند. این کار می‌تواند برای شناسایی بدترین عوامل تأخیر ورودی مفید باشد. در ستون سمت راست می‌توانیم نشانی وب اسکریپت‌های مسئول کارهای طولانی رشته اصلی را ببینیم.

در سمت چپ می‌توانیم مدت این تکالیف را ببینیم. یادآوری: «تکالیف طولانی» تکالیفی هستند که اجرای آن‌ها بیش‌از ۵۰ میلی‌ثانیه طول می‌کشد. این مسئله باعث می‌شود رشته اصلی به‌اندازه‌ای مسدود شود که بر نرخ فریم یا تأخیر ورودی تأثیر بگذارد.

If considering third-party services for monitoring, I also quite like the main-thread execution timeline visual Calibre has for visualizing these costs, which highlights both parent and child tasks contributing to long tasks that impact interactivity.

خط زمان اجرای رشته اصلی که Calibre به‌صورت دیداری دارد

درخواست‌های شبکه را مسدود کنید تا تأثیر قبل/بعد را در Lighthouse ببینید

‫Chrome DevTools از مسدود کردن درخواست‌های شبکه پشتیبانی می‌کند تا تأثیر برداشته شدن یا دردسترس نبودن منابع مجزا را ببینید. این کار می‌تواند برای درک هزینه‌ای که اسکریپت‌های تکی (مثلاً جاسازی‌ها یا ردیاب‌های طرف سوم) بر سنجه‌هایی مانند «کل زمان مسدودسازی» (TBT) و «زمان تعاملی» دارند مفید باشد.

مسدودسازی درخواست شبکه با Lighthouse هم کار می‌کند! بیایید نگاهی سریع به گزارش Lighthouse برای یک سایت بیندازیم. امتیاز Perf برابر با ۶۳/۱۰۰ با TBT‏ ۴۰۰ میلی‌ثانیه است. با بررسی کد، متوجه می‌شویم که این سایت یک شبیه‌ساز مرورگر Intersection Observer را در Chrome بار می‌کند که ضروری نیست. بیایید مسدودش کنیم!

انسداد درخواست شبکه

می‌توانیم روی اسکریپتی در پانل DevTools Network کلیک راست کنیم و روی Block Request URL کلیک کنیم تا آن را مسدود کنیم. در اینجا این کار را برای شبیه‌ساز مرورگر Intersection Observer انجام می‌دهیم.

مسدود کردن نشانی‌های وب درخواست در DevTools

سپس می‌توانیم Lighthouse را دوباره اجرا کنیم. این بار می‌بینیم که امتیاز عملکرد ما بهبود یافته است (۷۰/۱۰۰) و «کل زمان مسدودسازی» نیز بهبود یافته است (۴۰۰ میلی‌ثانیه => ۳۰۰ میلی‌ثانیه).

نمای بعداز مسدود کردن درخواست‌های شبکه پرهزینه

جاسازی‌های پرهزینه شخص ثالث را با نما جایگزین کنید

استفاده از منابع طرف سوم برای جاسازی ویدیوها، پست‌های رسانه‌های اجتماعی، یا ابزاره‌ها در صفحه‌ها رایج است. به‌طور پیش‌فرض، اکثر جاسازی‌ها بلافاصله با اشتیاق بارگیری می‌شوند و می‌توانند با محموله‌های پرهزینه‌ای همراه باشند که تأثیر منفی بر تجربه کاربری می‌گذارند. اگر طرف سوم حیاتی نباشد (مثلاً اگر کاربر باید پیمایش کند تا آن را ببیند)، این کار اتلاف منابع است.

یک الگو برای بهبود عملکرد چنین ابزارهایی، بار کردن کُند آن‌ها در تعامل کاربر است. این کار را می‌توان با ارائه پیش‌نمایش سبک از ابزاره (یک نما) انجام داد و نسخه کامل را فقط درصورتی بار کرد که کاربر با آن تعامل داشته باشد. Lighthouse ممیزی‌ای دارد که منابع شخص ثالثی را که می‌توانند با نما بارگذاری کُند شوند، مانند جاسازی‌های ویدیو YouTube، توصیه می‌کند.

ممیزی نشان می‌دهد که برخی‌از منابع شخص ثالث پرهزینه را می‌توان جایگزین کرد

یادآوری می‌کنیم که Lighthouse کد طرف سومی را که رشته اصلی را برای بیش‌از ۲۵۰ میلی‌ثانیه مسدود می‌کند برجسته خواهد کرد. این کار می‌تواند انواع اسکریپت‌های شخص ثالث (ازجمله اسکریپت‌های نوشته‌شده توسط Google) را که ممکن است ارزش به‌تعویق انداختن یا بار کردن کُند داشته باشند، درصورتی‌که آنچه ارائه می‌دهند نیاز به پیمایش برای مشاهده داشته باشد، آشکار کند.

کاهش هزینه ممیزی جاوا اسکریپت شخص ثالث

فراتر از «معیارهای کلیدی اصلی وب»

علاوه‌بر برجسته کردن «معیارهای کلیدی اصلی وب»، نسخه‌های اخیر Lighthouse و PageSpeed Insights نیز تلاش می‌کنند راهنمایی‌های ملموسی ارائه دهند که می‌توانید برای بهبود سرعت بار شدن برنامه‌های وب با جاوا اسکریپت سنگین دنبال کنید، البته اگر نقشه‌های منبع را روشن کرده باشید.

این موارد شامل مجموعه درحال رشدی از ممیزی‌ها برای کاهش هزینه JavaScript در صفحه شما است، مانند کاهش اتکا به شبیه‌سازهای مرورگر و موارد تکراری که ممکن است برای تجربه کاربری موردنیاز نباشد.

برای اطلاعات بیشتر درباره ابزار «معیارهای کلیدی اصلی وب»، حساب توییتر تیم Lighthouse و جدیدترین‌های DevTools را دنبال کنید.