جلسه ۱۸ – رفع ارور Avoid long main-thread tasks

آموزش حل مشکل Avoid long main-thread tasks در جی تی متریکس

رفع ارور Avoid long main-thread tasks

سلام همراهان عزیز میزفا
از مجموعه مقالات آموزش GTmetrix میزفا همراه شما هستیم. تو مقاله قبلی درباره رفع خطای Avoid large layout shifts صحبت کردیم و در این مقاله به آموزش برطرف کردن مشکل Avoid long main-thread tasks در ابزار GTmetrix جدید می‌پردازیم. خطای Avoid long main-thread tasks اشاره به این موضوع داره که نباید برای مرورگر وظایف (Tasks) طولانی تعریف کنیم و نباید از فایل‌های جاوا اسکریپتی استفاده کنیم که اجرای اونها باعث درگیر شدن طولانی مدت main thread بشه. رفع خطای Avoid long main-thread tasks کاملا سخت بوده و نیاز به مهارت بالای برنامه نویسی داره. برای رفع این خطا باید فایل‌های JavaScript و گاها CSS که باعث بروز این مشکل میشن رو شناسایی و بهینه سازی کنیم.
لطفا تا پایان با میزفا همراه باشید.

خلاصه خطای Avoid long main-thread tasks

میزان سختی: *****
روی چه مواردی تاثیر میذاره: TBT و TTI و خطای Minimize main-thread work

علت ایجاد خطای Avoid long main-thread tasks چیست؟

برای اینکه ارور Avoid long main-thread tasks رو بهتر درک کنیم، لازمه اول با چند معیار مهم درباره مرورگر آشنا بشیم. پس بیایید در ابتدا ببینیم main thread چیه؟ همونطور که در مقاله گزارش Performance جی تی متریکس هم گفته بودیم، هنگامی که صفحه وبسایت در حال لود شدنه، لازمه منابع زیادی فراخوانی بشن و وظایف و عملیات گوناگونی پشت صفحه رخ میده. کارهایی مثل تجزیه فایل‌های HTML و CSS ، ساختن DOM ، اجرای فایل‌های JavaScript و… به زبون خیلی ساده، مرورگر از main thread برای اجرای این کارها یا درخواست‌های کاربر (مثل کلیک کردن) استفاده می‌کنه.

یه مثال خیلی خوب برای درک بهتر main thread اینه که main thread رو مثل گارسون رستوران در نظر بگیریم. این گارسون وظایف مختلفی مثل گرفتن سفارش‌ها، تحویل سفارش به آشپزخانه، بردن غذا سر میز، تمیز کردن میزها و… داره. حالا اگه یکی از کارهای این گارسون بیش از حد طول بکشه، چه اتفاقی می‌افته؟ درسته، به کارهای مهم دیگه نمی‌رسه. پس باید طوری وظایف گارسون (main thread) رو طراحی کنیم که رسیدگی به یک کار خاص، وقتش رو بیش از حد نگیره.

معیار بعدی که باید باهاش آشنا بشیم، Task هست. Task مفهوم پیچیده‌ای نداره. رویدادهایی مثل تجزیه سند HTML یا تجزیه CSS و همچنین تجزیه و اجرای JavaScript، هر کدوم یه Task یا وظیفه برای مرورگر محسوب میشن. نکته کلیدی که اینجا باهاش کار داریم، اینه که تعدادی از Task ها روی main thread اجرا میشن.

اگه به مثالمون برگردیم، هر کدوم از وظایفی که گارسون عزیز مسئولیت انجامش رو بر عهده داره، یه Task محسوب میشه. حالا اگه یه Task بیش از حد طولانی بشه، همونطور که گفتیم باعث میشه گارسون (مرورگر) کمی دیرتر به انجام سایر موارد ضروری برای لود کامل صفحه برسه. بنابراین صفحه دیرتر قابل تعامل میشه و این مستقیما روی Time to Interactive اثر می‌ذاره. اگه نمی‌دونید معیار TTI چقدر در بهینه سازی سرعت سایت مهمه، کافیه مقاله Time to Interactive چیست رو مطالعه کنید. حل مشکل Avoid long main-thread tasks همچنین در بهینه سازی معیار First Paint هم موثره.

درباره اینکه خطای Avoid long main-thread tasks دقیقا چه زمانی ایجاد میشه، باید بگیم هروقت انجام یکی از Task ها بیش از ۵۰ میلی ثانیه طول بکشه، خطای Avoid long main-thread tasks ایجاد میشه. در عکس زیر از سایت GTmetrix این موضوع بهتر مشخص شده.

خطای Avoid long main-thread tasks
(منبع عکس)

در عکس بالا، هر کدوم از موارد A تا E یه Task هستند که می‌تونه اجرای فایل‌های JavaScript یا یه فایل CSS یا چیز دیگه‌ای باشه. موارد A و B و E که با رنگ قرمز مشخص شدند، main thread رو بیش از ۵۰ میلی ثانیه متوقف می‌کنند. در نهایت این مسئله باعث کندی سرعت لود صفحه میشه.

چطور خطای Avoid long main-thread tasks را برطرف کنیم؟

همونطور که در ابتدای مقاله هم گفتیم، حل مشکل Avoid long main-thread tasks ساده نیست و نیاز به تجربه و مهارت بالا در برنامه نویسی داره. با کلیک کردن روی این خطا در گزارش Structure جی تی متریکس با صحنه‌ای شبیه عکس زیر مواجه می‌شیم. در اینجا GTmetrix لیستی از مواردی که بیش از ۵۰ میلی ثانیه main thread رو درگیر کردند نمایش میده. با بررسی این موارد باید اولویت بندی کنیم و ببینیم کدوم یکی از اونها قابلیت بهینه سازی رو دارند.

برطرف کردن خطای long main-thread tasks
برطرف کردن خطای Avoid long main-thread tasks در سایت میزفا

همونطور که ملاحظه می‌کنید ارور Avoid long main-thread tasks در سایت میزفا تا حد بسیار زیادی بهینه سازی شده. اما ممکنه در بعضی از سایت‌ها خطای Avoid long main-thread tasks یه مشکل جدی باشه و با درجه اهمیت بالا (High) باشه. مثل نمونه زیر که مشاهده می‌کنید.

مشکل Avoid long main-thread tasks
نمونه مشکل Avoid long main-thread tasks

همینطور که در عکس بالا هم مشاهده می‌کنید (و طبق تجربه ما در پروژه های بهینه سازی سرعت سایت در میزفا) اجرای فایل‌های JavaScript بیشترین مشکل رو در این زمینه ایجاد می‌کنند. پس برای برطرف کردن خطای Avoid long main-thread tasks در GTmetrix جدید باید حواسمون به جاوا اسکریپت‌ها باشه. مخصوصا فایل‌های سنگین جاوا اسکریپت که باید با روش‌های اصولی و توسط متخصص برنامه نویسی به قسمت‌های کوچکتر تقسیم بشن و اصطلاحا کدهاشون Split بشه که این مقاله منبع خوبی برای متخصصان برنامه نویسی در این زمینه محسوب میشه.

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

در مجموع باید سعی کنیم تا جایی که امکان داره از Task های کوچکتر که کمتر از ۵۰ میلی ثانیه زمان نیاز دارند استفاده کنیم. اما یه روش خوب دیگه برای رفع ارور Avoid long main-thread tasks در GTmetrix اینه که از مسئولیت اجرای فایل‌های JavaScript رو از دوش main thread برداریم. همونطور که چندین بار در این مقاله اشاره کردیم، مشکل اصلی در خطای Avoid long main-thread tasks درگیر شدن طولانی و بیش از حد جناب main thread هست. پس اگه بتونیم اجرای JavaScript رو با روشی بدون درگیر شدن main thread انجام بدیم، باعث میشه این خطا تا حدی برطرف بشه. خوشبختانه این کار با استفاده از Web Worker ها امکان پذیره. اما چون صحبت کردن درباره روش انجامش بحث تخصصی برنامه نویسی هست و احتمالا از حوصله مخاطبان این مقاله میزفا خارج باشه، برای دوستانی که علاقه دارند اطلاعات بیشتری به‌دست بیارند، لینک مقاله رو قرار دادیم تا در صورت تمایل مطالعه کنند.

سایر روش‌هایی که می‌تونند به برطرف کردن خطای Avoid long main-thread tasks کمک کنند شامل موارد زیر هستند:

از یه متخصص SEO یا برنامه نویسی کمک بگیرید

مقاله رو خوندید؟ سایر سایت‌ها رو هم مطالعه کردید؟ آیا تلاش کردید تا بتونید براساس راهنمایی که کردیم کار رو انجام بدید و این مشکل رو حل کنید؟ اگه مشکل هنوز حل نشده، اجازه بدید یه تیم حرفه‌ای سئو براتون انجام بده؛ اگه تیم خوب می‌شناسید که هیچ ولی اگه دنبال یه تیم حرفه‌ای و همینطور دنبال خدمات خوب در زمینه سئو می‌گردید، می‌تونید خدمات سئو میزفا رو یک نگاهی بکنید، کلی خدمات متنوع برای بهینه سازی سرعت سایت و بهبود SEO در این صفحه هست که می‌تونه براتون خیلی مفید باشه.

جمع بندی

در این مقاله میزفا درباره حل مشکل Avoid long main-thread tasks در GTmetrix جدید صحبت کردیم. ما در ابتدا درباره اهمیت main thread صحبت کردیم و سپس دلیل ایجاد این خطا رو گفتیم. سپس روش‌هایی رو برای برطرف کردن این نوع خطا برای شما عزیزان بیان کردیم. امیدوارم این آموزش براتون مفید بوده باشه. تو مقاله بعدی درباره خطای Avoid multiple page redirects و اهمیتش در بهینه سازی سرعت صحبت خواهیم کرد.

اگه سوالی دارید می‌تونید در نظرات همین صفحه (پایین هست) بپرسید تا با کمال میل به شما پاسخ بدیم.

فیلم آموزشی افزایش سرعت سایت با gtmetrix
فیلم آموزشی افزایش سرعت سایت با gtmetrix
محمدعرفان صدری
از ۱۶-۱۷ سالگی تا الان (که ۲۶ سالمه) شغل‌های متنوعی رو تجربه کردم؛ از پخش کردن تراکت تا کار تو کارگاه ماست بندی؛ از منشی آموزشگاه زبان تا تدریس زبان انگلیسی؛ مشاوره تحصیلی و یه سری کارهای اجرایی؛ و در نهایت هم SEO و بازاریابی آنلاین. چیزی که تو همه این مشاغل توجهم رو جلب کرده، اینه که موسسات و سازمان‌های ایرانی چقدر جا برای رشد و پیشرفت حرفه‌ای دارند و چقدر از این موضوع غافلند. از طرف دیگه متوجه شدم علاقه شدید و پتانسیل عجیبی دارم برای کمک به رشد و توسعه کسب‌وکارها. و اینطوری شد که الان در حیطه SEO و بازاریابی محتوایی، پروژه انجام می‌دم، تدریس می‌کنم و مقاله می‌نویسم تا در حد خودم کمکی کرده باشم به رشد شما عزیزان.
لیست آموزش GTmetrix نسخه جدید

بدون نظر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

حداکثر حجم فایل برای آپلود: 1 مگابایت. فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ. شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید. Drop file here

با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
فیلم آموزشی asp.net core 2
ترک میزفا خوب نیست!
معرفی جامع‌ترین ابزار سئو در ایران
بالای ۱۰ هزار عضو
PHZpZGVvIHdpZHRoPSI2MDAiIGhlaWdodD0iMzUwIiBwb3N0ZXI9Imh0dHBzOi8vbWl6ZmEuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDUvcG9zdGVyLW1pemZhLXRvb2xzLXZpZGVvLW1pbi5wbmciIGNvbnRyb2xzIHByZWxvYWQ9Im5vbmUiPiANCiAgIDxzb3VyY2Ugc3JjPSJodHRwczovL21pemZhLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA1L21pemZhX3Rvb2xzXzcyMHAubXA0IiB0eXBlPSJ2aWRlby9tcDQiPg0KPC92aWRlbz4=