تصویر شاخص حل مشکلات جی تی متریکس

بررسی اشکالات جی تی متریکس

حل مشکلات GTmetrix با بررسی مورد به مورد در این مقاله بیان شده است.

  • حل مشکل Reduce initial server response time
  • حل مشکل Avoid an excessive DOM size
  • حل مشکل Enable Keep-Alive
  • حل مشکل critical request chain
  • حل مشکل Avoid long main-thread tasks
  • حل مشکل Use a Content Delivery Network (CDN)
  • حل مشکل Avoid large layout shifts
  • حل مشکل Minimize main-thread work

فهرست مقاله

حل مشکل کاهش زمان پاسخ اولیه سایت

مشکل کاهش زمان پاسخ اولیه سایت – Reduce initial server response time

زمان اول بایت ارسالی یا همانTime to First Byte (TTFB) ، در واقع به عنوان زمان پاسخ سرور شناخته می شود. در واقع این زمان، زمانی است که مرورگر درخواست خود را برای سرور ارسال کرده و اولین بایت ارسالی از طرف سرور را دریافت می کند.

کاهش TTFB برای تجربه کاربری صفحه بازدید کنندگان شما بسیار مهم است چرا که بر روی دریافت هر درخواست (request) ارسالی از طرف وب سایت شما اثر گذاشته و مستقیما بر مدت زمان بارگیری صفحه اثرگذار خواهد بود.

چنانچه TTFB کند باشد ، بازدیدکنندگان شما ممکن است فقط صفحه خالی را مشاهده کنند در حالی که مرورگر منتظر پاسخ از سرور است. بدون شک این نکته باعث ایجاد حس نامطلوبی در کاربران می گردد.

به عنوان یک بهینه سازی پر اهمیت ، کاهش TTFB می تواند عملکرد وب سایت شما را به طور قابل توجهی بهبود بخشد.

تاثیر زمان پاسخگویی (server response time) سرور بر عملکرد صفحه (page performance)

وقتی کاربر وارد سایت شما شده و درخواست لود صفحه از طرف مرورگر ارسال می شود، این درخواست باید به سرور ارسال شده ، سرور پاسخ مناسب را ایجاد کرده و کدها و منابع صفحه وب سایت شما را ارسال کند.

نمودار پاسخ سمت سرور برای سرعت سایت

TTFB به عوامل مختلفی بستگی دارد ، اما عمدتا عملکرد نشان داده شده در مرحله 2 مد نظر است.

کل فرایند به عوامل مختلفی مانند سرعت انتقال شبکه ، عملکرد کد نویسی های نوشته شده و عملکرد سرور بستگی دارد. به زبان ساده ، اگر هر یک از این عناصر کند باشد ،TTFB شما تحت تأثیر قرار می گیرد. انتظار بیش از حد کاربران برای لود شدن صفحه حتی ممکن است منجر به ناامید شدن آنها و ترک صفحه شما شود که امری بسیار فاجعه بار است.

TTFB سریع ، به این معنی است که بازدیدکننده شما در صورت شروع انجام درخواست ، سریع پاسخ می دهد. هرچه سریعتر بایت اول از سرور به مرورگر برسد ، بقیه منابع صفحه شما زودتر پردازش شده و به کاربر نمایش داده می شوند.

توجه داشته باشید که تعاریف زیادی برای TTFB وجود دارد. جی تی متریکس (GTmetrix) ، TTFB را مجموع مدت زمان ارسال درخواست ، مدت اتصال و مدت زمان بازگشت می داند.

محاسبه زمان gtmetrix-ttfb

در شکل فوق زمان محاسبه شده برای TTFB نمایش داده شده است.

مقدار قابل قبول GTmetrix برای این پارامتر چقدر است؟

حد ایده آل در نظر گرفته شده برای این موضوع برابر 600 میلی ثانیه بوده و اگر زمان پاسخگویی اولیه سرور بیش از 600 میلی ثانیه ، باشد این مورد از دیده جی تی متریکس و گوگل عملکرد نامناسبی ارزیابی خواهد شد.

چگونه زمان پاسخ سرور را کاهش دهیم؟

حال زمان پاسخگویی به این سوال مهم رسیده است. برای این کار 3 راه حال وجود دارد.

راه حل اول: بهینه سازی کدهای داخلی وب سایت به ویژه درخواست های پایگاه داده (Database)

البته این مورد نیازمند دانش تخصصی زیادی بوده و ما اکیداً توصیه می کنیم که از متخصصین درخواست کمک کنید چراکه در صورت انجام اشتباه ممکن است ضربه سختی به وب سایت خود وارد کنید. برای این منظور می توانید کدهای داخلی دیتابیس را تا حد امکان ساده سازی کرده و آنها را دسته بندی کنید تا در بلوک های خاصی اجرا شوند. همچنین می توانید کد های غیر ضروری را پاک کنید.

در صورتی که از سیستم مدیریت وردپرسی برای مدیریت وب سایت خود استفاده می کنید می توانید با استفاده از افزونه های بهینه ساز این کار را انجام دهید البته تغییرات خاص و پیچیده ای را نمی توانید اعمال کنید که ما هم پیشنهاد میکنیم چنین کاری را انجام ندهید.

راه حل دوم : اجرای حافظه پنهان سرور یا همان سیستم کش (server-side caching)

حافظه پنهان (حافظه کش) روشی است که به جای پردازش در سرور و تولید صفحه در صورت درخواست کاربر، از نسخه پیش ساخته صفحه ، در هنگام درخواست استفاده می شود. برای حل این موضوع می توانید از پلاگین های وردپرسی زیادی استفاده کنید. (پلاگین های بهینه سازی کش) پیشنهاد ما برای انجام این کار استفاده از یکی از 3 پلاگین زیر است.

البته توجه داشته باشید که میزبان و هاستینگ شما ممکن است از قبل در حافظه کش سمت سرور این مورد را در نظر گرفته باشد. بنابراین برای روشن شدن موضوع حتماً با آنها تماس بگیرید.

راه حل سوم: به روزرسانی سخت افزار سمت سرورCPU یا RAM قوی تر

معمولا شرکت های هاستینگ سیستم های مختلفی را برای ارائه به مشتریان خود تدارک دیده اند که با قیمت های مختلفی این ارائه انجام می شود. پیشنهاد می کنیم در صورتی که بودجه شما اجازه می دهد حتما از سیستم های قوی تر و سریع تر استفاده کنید. برای این موضوع حتما با شرکت خدمات هاستینگ خود مشورت کنید.

توجه: اگر کدنویسی وب سایت شما بسیار ناکارآمد باشد ، تمام منابع سخت افزاری در جهان نیز باعث کاهش زمان بارگیری نمی شوند!!! پس حتما در مرحله اول بهینه سازی کدهای داخلی وب سایت خودتان را انجام دهید. در نهایت برای انجام اصلاحات این مورد حتما با کارشناسان با تجربه در تماس باشید. در این مسیر کارشناسان تاپ ادورت با افتخار آماده پاسخ گویی به سوالات هستند.


منبع: سایت جی تی متریکس

حل مشکل Avoid an excessive DOM size

قبل از هر چیزی لازم است تا تعریفی در رابطه با المان های DOM ارائه کنیم.

المان Dom چیست؟

DOM یا همان Document Object Model در واقع یک مدل و ساختار درختی از تمام عناصر HTML درون یک صفحه وب است. که در آن عناصر HTML (همان تگ‌های HTML) به عنوان اشیاء در نظر گرفته می‌شوند. DOM در واقع یک API یا همان رابط برنامه نویسی برای جاوا اسکریپت است که به برنامه نویس اجازه کارهای زیر را می دهد:

  • حذف ، اضافه یا تغییر تگ‌های (عناصر) HTML
  • حذف ، اضافه یا تغییر خصیصه‌های attribute) HTML)
  • حذف ، اضافه یا تغییر استایل‌های CSS
  • واکنش به رویداد‌های Event) HTML)
  • حذف ، اضافه یا تغییر رویداد‌های HTML

صفحه html دارای کد هایی است که هر کدام از این کد ها در یک بلوک قرار گرفته و این درخت که معروف به درخت DOM است را می سازد.

المان Dom

بدیهی است که هرچه این درخت بزرگتر و پیچیده تر باشد ، محاسبات و پاسخگویی طولانی تر خواهد شد. در واقع هر زمان که شما تغییری در ظاهر سایت خود ایجاد میکنید باعث می شوید که این ساختار درختی تغییر پیدا کند. با توجه به نکته بیان شده می توان گفت اجتناب از اندازه بیش از حد DOM به نفع صفحه شماست و باعث بهبود تجربه کاربری صفحه می شود.

یک درخت DOM بزرگ چگونه بر عملکرد صفحه تأثیر می گذارد؟

هر زمان که یک صفحه بارگیری می شود ، مرورگر قبل از اینکه شروع به ساخت درخت Document Object Model (DOM) کند، HTML آن صفحه را دانلود و تجزیه می کند. این درخت DOM تمام عناصر HTML را، که شامل ساختار و محتوای صفحه وب میشود، دربرمیگرد.

حال یک درخت بزرگ DOM می تواند به روش های زیر بر عملکرد صفحه شما تأثیر منفی بگذارد:

مورد اول: افزایش غیرضروری تعداد بایت های منتقل شده

این افزایش به دلیل گنجاندن چندین گره که در ابتدا با بارگذاری اولیه قابل مشاهده نیستند، اتفاق می افتد و بر کارایی شبکه و عملکرد بارگذاری صفحه شما تأثیر می گذارد. این به معنی حجم بالاتر داده و بارگذاری کند و آهسته صفحه برای کاربران شما است. در نظر بگیرید که هرچه درخت DOM بزرگتر و پیچیده تر باشد تعداد کدهای بیشتری رد و بدل خواهد شد و این موضوع باعث تبادل اطلاعات بیشتری خواهد شد.

مورد دوم: کاهش بیش اندازه سرعت رندر صفحه

به دلیل اینکه مرورگر دائماً نیاز به محاسبه مجدد موقعیت و استایل دهی گره های مختلف دارد، سرعت رندر صفحه کاهش می یابد. این عامل هنگام ترکیب با قوانین پیچیده استایل دهی و کدهای css شدیدتر می شود و بر عملکرد زمان اجرای صفحه شما تأثیر می گذارد.

مورد سوم: تخریب قدرت Ram سیستم کاربران

این تخریب به دلیل تعاملات گسترده با کوئری های جاوا اسکریپت اتفاق می افتد. بهینه سازی اندازه DOM عملکرد زمان اجرا را بهبود می بخشد ، سرعت ارائه صفحه را افزایش می دهد و به شما کمک می کند یک تجربه کاربری مناسب و مثبت به کاربران خود ارائه دهید.

GTmetrix چگونه این گزارش را آماده کرده است؟

GTmetrix مجموع عناصر DOM را برای یک صفحه ، حداکثر عمق DOM صفحه و حداکثر عناصر فرزند (Child elements) را گزارش می دهد. بسته به تعداد عناصر DOM، نمره گزارش GTMetrix صفحه شما تغییر می کند.

اگر اندازه DOM صفحه شما بیش از 818 عدد باشد ، این عامل بعنوان یک مشکل به شما گزارش داده می شود.

چگونه از اندازه بیش از حد DOM جلوگیری کنیم؟

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

به عنوان مثال: اگر برای ساخت وب سایت خود، از CMS یا سیستم مدیریت محتوا استفاده می کنید، باید به پوسته و افزونه های استفاده شده توجه کنید نمایید چرا که ممکن است عناصر زیادی به صفحه تزریق کنند که به عملکرد سایت شما ارتباطی نداشته باشند.

در بسیاری از موارد ، این ویژگی ها به صورت پنهان شده در وبسایت وجود دارند و باعث می شوند فکر کنید هیچ کدی وجود ندارد. در صورت امکان ، کدهای ناخواسته ای را که به کارایی سایت بی ارتباط است حذف کنید.

به یاد داشته باشید که هرچه صفحه شما پیچیده تر باشد ، احتمالاً اندازه DOM صفحه شما بزرگتر است.

توجه: این یک بهینه سازی تخصصی است و فقط به متخصصین با تجربه توصیه می شود که این عامل را اصلاح کنند.


منبع: GTmetrix – Lighthouse: Avoid an excessive DOM size

حل مشکل Enable Keep-Alive

تذکر: این ملاک توسط خود جی تی متریکس ارائه شده است.

برای درخواست های HTTP/1.1 ، فعال کردن Keep-Alive تاخیر را کاهش داده و عملکرد صفحه شما را بهبود می بخشد.

ممکن است مرورگرها از چندین اتصال TCP برای بازیابی فایل های موجود در صفحه شما از سرور استفاده کنند، چرا که احتمالا با تحویل فایل اولیه اتصال اصلی قطع شده است. این اتصال چندگانه باعث افزایش تاخیر مدت زمان بارگیری صفحه شما می شود.

فعال کردن Keep-Alive این امکان را فراهم می کند تا از یک اتصال TCP برای انتقال چندین فایل استفاده شده و در نتیجه بارگیری صفحه سریعتر انجام می شود.

فعال کردن Keep-Alive چه تاثیری بر عملکرد صفحه دارد؟

فعال کردن Keep-Alive تضمین می کند که از یک اتصال TCP برای انتقال چند فایل، از سرور به مرورگر استفاده شود و از آنجایی که با این اتصال دیگر مرورگر برای بازیابی تمام منابع صفحه شما نیازی به برقراری اتصال دیگری ندارد، به صفحه شما کمک می کند تا سریعتر بارگیری شود.

به طور کلی ، مرورگر یک اتصال TCP را با یک سرور برقرار می کند تا بتواند منابع صفحه شما را بازیابی کرده و محتوای صفحه را نمایش دهد.

با درخواست های HTTP/1.1 ، مرورگر می تواند اتصالات TCP را پس از دریافت فایل خاصی از سرور، ببندد. اگر چندین اتصال برای بازیابی فایل های صفحه شما برقرار شود، تأخیر غیرضروری شبکه را افزایش داده ، در نتیجه بارگیری صفحه کند انجام می شود.

فعال کردن Keep-Alive به صراحت به مرورگر اعلام می کند که با دریافت فایل از سرور ، نباید اتصال را قطع کند. توجه داشته باشید که این اقدام فقط برای درخواست های HTTP/1.1 قابل اجرا است. وب سایت هایی که بر پایه درخواست های HTTP/1.1 عمل می کنند، می توانند چندین اتصال TCP با یک سرور برقرار کنند تا منابع صفحه را دریافت کنند. در حالی که بسیاری از وب سایت ها به HTTP/2 منتقل شده اند و یا برخی از سرورهای وب به طور خودکار پرونده ها را از طریق یک اتصال TCP منتقل می کنند. البته ممکن است این موارد برای برخی از کاربران صدق نکند.

GTmetrix چگونه این گزارش را آماده می کند؟

GTmetrix پاسخ منابع صفحه شما را ارزیابی می کند و درخواست هایی را که اتصال Keep-Alive ندارند پرچمگذاری می کند. اگر حداقل یک منبع از این دست وجود داشته باشد، این عامل هشدار داده می شود.

این در حالی است که Lighthouse بررسی می کند آیا صفحه وب شما از HTTP/2 استفاده می کند یا خیر و فعال بودن Keep-Alive را در سرور وب شما را بررسی نمی کند.

GTMETRIX معتقد است که کاربران باید از این تنظیم ساده که می تواند باعث بهبود عملکرد صفحات وب آنها شود آگاه شوند. به همین دلیل این عامل را در گزارش های خود گنجانده است.

چگونه Keep-Alive را فعال کنیم؟

بسته به وب سرور مورد استفاده خود ، دستورالعمل های زیر را دنبال کنید:

1) سرورهای Apache :Apache به صورت پیش فرض اتصالات Keep-Alive را فعال می کند. با این حال ، می توانید با افزودن خط زیر به فایل ” httpd.conf ” آن را فعال کنید. اما توجه داشته باشید اگر وبسایت شما روی یک هاست اشتراکی قرار دارد، احتمالاً به httpd.conf دسترسی نخواهید داشت و بنابراین مجبورید تنظیمات پیشفرض ارائه دهنده فضای میزبانی خود کنار بیایید.

 KeepAlive On

هشدار مهم درباره htaccess: ممکن است منابع دیگر به شما پیشنهاد کنند تا با افزودن کد زیر به فایل htaccess ، اقدام به فعال کردن keep alive کنید. اما بر خلاف آنچه این وب سایت ها پیشنهاد می دهند ، افزودن کد فوق به فایل htaccess در واقع اتصالات Keep-Alive را فعال نخواهد کرد بلکه باعث می شود اطلاعات نادرستی درباره قابلیت های سرور به مرورگرها ارسال شوند.

 Header set Connection keep-alive

2) سرورهای Microsoft IIS : کد زیر را کپی و در خط فرمان جایگذاری کنید:

 appcmd set config /section:httpProtocol /allowKeepAlive:true

3) سرورهای NGINX :حالت Keep-Alive به صورت پیش فرض در سرورهای NGINX فعال است.


منبع : Lighthouse: Enable Keep-Alive

حل مشکل critical request chain

critical request chain، درواقع یک سری درخواست های دنباله دار وابسته به یکدیگر هستند که برای ارائه صفحه ضروری هستند. این کار توسط یک روند مشخص ارائه می شود که ترتیب درخواست های تجزیه و اجراکردن را تعیین می کند.

درخواست های ضروری زنجیره ای طولانی (به خصوص آنهایی که منابع زیادی دارند) می توانند زمان بارگذاری صفحه شما را که به render-blocking شناخته می شوند، افزایش دهند. با کاهش تعداد critical request chains می توانید سرعت لود صفحه خود را بالا ببرید.

render-blocking در واقع این موضوع را بیان می کند که ابتدا باید فایل خاصی لود شود تا فایل بعدی که در صف قرار دارد وارد پروسه بارگزاری شود.

critical request chain چه تاثیری روی سرعت لود صفحه دارند؟

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

در صورتیکه مشخص نشوند، کدهای HTML معمولا دارای الویت اول هستند. بعد از آن CSS ها ، عکس ها و JavaScript ها به ترتیب الویت بندی می شوند. البته توجه داشته باشید این در صورتی است که خود شما اولویت بندی خاصی را تعریف نکرده باشید. چراکه در اینصورت اولویت با تنظیمات و توالی هایی است که شما انجام داده اید.

تشکیل critical request chain طولانی ، باعث به وجود آمدن تاخیر در لود صفحات سایت شده و زمان بارگذاری صفحه شما را افزایش می دهند.

حداکثر تاخیر critical path ، مجموع کل زمان صرف شده برای بارگیری همه منابع در طولانی ترین critical request chain است.

با به حداقل رساندن تعداد منابع بوسیله به تعویق انداختن لودینگ ، حذف کامل آنها ، یا کوتاه کردن طول critical path می توان باعث افزایش عملکرد وب سایت و بهبود تجربه کاربری بازدید کنندگان شد.

GTmetrix بر چه اساسی این گزارش را آماده می کند؟

یک critical request به عنوان یکی از درخواست های زیر تعریف می شود:

  • Render-blocking
  • Not preloaded (بارگیری نشده)
  • Declared with a medium, high, or very high priority (اعلام با الویت متوسط ، بالا ، یا خیلی زیاد)

بررسی این مبحث در صورتی آغاز می شود که حداقل یک critical request chain وجود داشته باشد.

برای شروع کردن بررسی ، GTmetrix طولانی ترین critical request chain را با جزئیات نمایش می دهد و به شما اجازه می دهد هر درخواست را مشاهده کنید.

همچنین حداکثر critical path latency نمایش داده می شود.

چگونه این بررسی را انجام دهیم؟

به طور کلی ، ارزیابی کنید که چه منابعی در صفحه شما بارگیری می شود و سعی کنید زمان را برای بارگیری صفحه خود را به حداقل برسانید. چند استراتژی وجود دارد که می توانید برای بهینه سازی طول critical request chain استفاده کنید، چند نمونه برای شما معرفی کرده ایم:

  1. بارگیری درخواست های کلیدی: برای سرعت بخشیدن به اجرای منابع مهم ، درخواست های کلیدی (مانند: اسکریپت ها ، صفحات وب ، صفحه های سبک و غیره) را از قبل بارگیری کنید ، این کار باعث صرفه جویی وقت در زمان بارگیری صفحه می شود.
  1. کاهش تعداد critical resources: برای کاهش تعداد critical resources مورد نیاز (یعنی منابع مورد نیاز برای نمایش محتوای با ارزش) بوسیله به تأخیر انداختن بارگیری non-critical resources یا در صورت امکان از حذف کامل آن ها استفاده کنید. این کار تضمین میکند که مرورگر زمان کمتری را برای بارگیری منابع غیرضروری صرف کند. به عنوان مثال: تصاویر کم ارزش ، کدهای جاوا اسکریپت ، استایل های CSS برای محتوای غیر مهم.
  1. استفاده از ویژگی font-display: از ویژگی font-display برای بهینه سازی بارگیری فونت وب سایت و تجربه صفحه بازدید کنندگان خود استفاده کنید.

توجه: این یک بهینه سازی در سطح پیشرفته است. پشتیبانی بوسیله متخصصین این کار اکیدا توصیه می شود.


منبع: GTmetrix-Lighthouse: Avoid chaining critical requests

حل مشکل Avoid long main-thread tasks

رویدادهایی مانند تجزیه HTML/CSS ، تجزیه/اجرای جاوا اسکریپت و سایر موارد “task” هایی هستند که بر روی رشته اصلی اجرا می شوند (به طور پیش فرض).

زمانیکه هر یک از این task ها در طول زمان بیش از 50 میلی ثانیه اجرا شود (به عنوان “task های طولانی ” نیز شناخته می شود) ، می تواند هم برای First Paint و هم زمانی که برای تعامل کامل صفحه شما لازم است تأخیر ایجاد کند.

حتما از main-thread tasks طولانی تا آنجایی که ممکن است، جلوگیری کنید، تا بازدیدکنندگان سایت شما یک تجربه کاربری خوب داشته باشند.

main-thread tasks طولانی چه تاثیری بر عملکرد صفحه دارند؟

هر بار که صفحه شما بارگیری می شود ، مرورگر از main-thread برای مدیریت بیشتر کارهای مربوط به ارائه محتوای صفحه استفاده می کند.

Avoid long main-thread tasks

فایل جاوا اسکریپت که مدت طولانی در حال اجرا است (A ، B ، E در بالا) ممکن است main-thread را برای مدت طولانی مسدود کند و از اجرای سایر فایل ها توسط مرورگر جلوگیری کند و در نتیجه در بارگزاری کلی صفحه شما تأثیر بگذارد. main-thread task های طولانی مانع از این می شوند که مرورگر با سایر فرآیندهای ضروری در بارگیری صفحه شما روبرو شود.

به عنوان مثال ، یک فایل جاوا اسکریپت که مدت طولانی در حال اجرا است ، مرورگر را از پردازش هر کار دیگری متوقف می کند تا زمانی که تجزیه و اجرا شود.

کاهش تعداد main-thread task طولانی با به حداقل رساندن کارmain-thread ، عملکرد کلی صفحه شما را بهبود می بخشد. این برای بازدیدکنندگان سایت شما به این معنی است ، ممکن است محتوا را سریعتر در صفحه شما ببینند و زودتر با آن ارتباط برقرار کنند.

GTmetrix چگونه این عملکرد را بررسی می کند؟

این بررسی با معیار زمان شما برای تعامل (TTI:Time to Interaction) ارتباط زیادی دارد. با کلیک بر روی این گزارش مشخص می شود که کدام یک از فعالیت های اجرا شده اصلی بیش از 50 میلی ثانیه بوده است.

چگونه از انجام main-thread task جلوگیری کنیم؟

این بررسی تمام وظایف طولانی را که در بخش اصلی انجام می شوند، لیست می کند.

برای برطرف کردن این مشکل شما باید توالی موجود بین فایل های اجرا شده را تغییر داده و لود شدن فایل ها و کدهایی که اهمیت کمتری دارند را به تعویق بیاندازید.

توجه: این یک بهینه سازی تخصصی است. فقط به متخصصین با تجربه توصیه می شود که این بررسی را بهبود ببخشند.


منبع: Lighthouse: Avoid long main-thread tasks

حل مشکل Use a Content Delivery Network (CDN)

استفاده از “Content Delivery Network(CDN)” می تواند عملکرد سایت شما را در مناطق مختلف جهان بهبود بخشد. CDN اساساً شبکه ای از سرورها است که در سراسر جهان پخش شده است. هر CDN “گره” ایست که در منطقه دیگری قرار دارد و محتوای ثابت صفحه شما مانند تصاویر ، پرونده های CSS / JavaScript و غیره را ذخیره می کند.

هنگامی که یک کاربر از صفحه شما بازدید می کند، منابع از نزدیکترین گره CDN به جای سرور مبدا ارائه می شوند ، تاخیر را کاهش می دهد و باعث می شود که بازدید کنندگان از هر مکان که قرار دارند لود یک صفحه سریع را تجربه کنند.

استفاده از Content Delivery Network (CDN) چه تاثیری بر عملکرد صفحه دارد؟

Content Delivery Network با ذخیره کردن منابع ثابت صفحه شما در سرورهای مختلف جهان ، تأخیر در زمان لود شدن فایل های سایت شما را کاهش می دهد.

بسته به محلی که بازدید کنندگان شما در آن قرار دارند ، محتوای صفحه شما از نزدیکترین سرور / گره CDN ارائه می شود.

GTmetrix چگونه عملکرد آن را بررسی می کند؟

GTmetrix پاسخ درخواست های لود صفحه شما بررسی می کند و مواردی که از CDN شناخته شده ارائه نمی شوند را شناسایی می کند.

اگر صفحه شما دارای منابع ثابتی است که روی CDN شناخته نشده است ، GTmetrix عملکرد آن را بررسی می کند. رتبه این بررسی به این بستگی دارد که چه تعداد منابع از CDN شناخته شده تأمین نمی شود. توجه داشته باشید که این موضوع تأثیر کمتری در رتبه ساختار سایت شما دارد و به احتمال زیاد روی عملکرد شما تأثیر می گذارد.

استفاده از Content Delivery Network (CDN) در اصل در لیست بررسی پیش فرض Lighthouse موجود نیست.

به هر حال ، با توجه به تأثیر بالقوه آن بر عملکرد سایت به اندازه کافی مهم است که در GTmetrix در نظر گرفته شده است.

CDN ها به طور کلی عملکرد قابل توجهی را برای بازدیدکنندگان فراهم می کنند. مهم نیست که بازدید کنندگان شما از کجا هستند ، CDN می تواند با ارائه منابع ثابت از نزدیکترین گره سرور ، عملکرد ثابت را تضمین کند.

البته می توان گفت که تمامی وب سایت ها به CDN احتیاجی ندارند. و در نتیجه استفاده از Content Delivery Network (CDN) به عنوان یک عامل منفی برای وب سایت شما مانند گذشته به حساب نمی آید ؛ اگرچه هنوز هم تا حدی بر رتبه آن تاثیر می گذارد.

چگونه این بررسی را انجام دهیم ؟

اولاً ، CDN ها برای عملکرد وب سایت شما ضروری نیستند. اگرچه آن ها می توانند عملکرد وب سایت شما را در مکان های مختلف جغرافیایی به طور قابل توجهی بهبود ببخشند ، اما این سوال که آیا شما باید از یکی از آن ها استفاده کنید به مخاطبان هدف و اهداف عملکرد شما بستگی دارد.

حالات زیر در نظر بگیرید:

  • CDN های شناخته شده: اگر از CDNهای محبوب (به عنوان مثال Cloudflare ، Netflify ، Amazon CloudFront ) برای ارائه منابع صفحه خود انتخاب کنید ، ممکن است GTmetrix از قبل این CDN را تشخیص دهد. در این صورت ، با شروع استفاده از CDN ، بررسی این پارامتر باید درست شود.
  • CDN های شناخته نشده: اگر از CDNهایی استفاده می کنید که نادر هستند می توانید با جی تی متریکس تماس بگیرید تا برای شما بررسی کنند.
  • من به CDN نیازی ندارم: اگر احساس می کنید که نیازی به استفاده از CDN ندارید (به عنوان مثال مخاطبان محلی ، وب سایت کوچک و غیره) ، می توانید این بررسی را با افزودن دامنه خود به قسمت نام های میزبان CDN در قسمت Analysis Options در حساب خود دور بزنید!!!

می توانید دامنه / نام هاست ، خود را به قسمت Hostnames CDN در تنظیمات کاربر اضافه کنید.

پس از انجام این کار ، GTmetrix وب سایت شما را به دلیل عدم استفاده از CDN امتیازی از شما کسر نخواهد شد. با این حال ، توجه داشته باشید که امتیاز عملکرد شما تغییری نخواهد کرد.


منبع: Lighthouse: Use a Content Delivery Network (CDN)

حل مشکل Avoid large layout shifts

مشکل Large layout shifts می تواند تجربه بسیار بد و نا امیدکننده ای را برای بازدیدکنندگان شما ایجاد کرده و باعث شود صفحه شما از نظر بصری نامناسب به نظر برسد. چرا که عناصر صفحه به طور ناگهانی ظاهر شده ، حرکت می کنند و بر نحوه تعامل بازدید کنندگان شما با صفحه تأثیر می گذارند. اجتناب از Large layout shifts در ایجاد یک تجربه کاربری مناسب برای بازدیدکنندگان ضروری است.

Layout Shift چگونه بر عملکرد صفحه تأثیر می گذارد؟

هنگامی که یک کاربر از صفحه وب شما بازدید می کند ، معمولاً در نظر دارد تا از طریق دکمه ها ، فرم تماس ، تصاویر ، فیلم ها یا انواع دیگر محتوا، با صفحه تعامل برقرار کند. گاهی اوقات ، درست زمانی که کاربر می خواهد روی قسمتی کلیک کند، صفحه به سمت پایین حرکت کرده و کاربر برای کلیک کردن با مشکل مواجه می شود.

به طور مثال: فیلم زیر را مشاهده کنید که با بارگیری صفحه ، تصاویر قرمز باعث جابجایی و تنظیم سایر عناصر شده و باعث ایجاد یک تجربه کاربر بد می شود.

و یا این فیلم را مشاهده کنید:

این “تغییر طرح” بر نحوه تعامل کاربران با وب سایت شما ، به ویژه در دستگاه های تلفن همراه تأثیر می گذارد. نمره پایین CLS نشان می دهد که صفحه شما از نظر بصری ناپایدار است. با اینکه CLS روی نمره عملکرد تأثیر زیادی ندارد (فقط 5٪)، درج آن در Web Vital نشان دهنده اهمیت آن به عنوان یک معیار مفید است که تجربه صفحه شما را منعکس می کند.

چگونه می توان از Large layout shifts جلوگیری کرد؟

شما می توانید با استفاده از روش های زیر ، از Large layout shifts جلوگیری کنید:

راهکار اول: تعیین ابعاد تصویر: همیشه ، عرض و ارتفاع را برای عناصر تصویر و فیلم سایت خود مشخص کنید تا از فاصله ای مناسب برای تصاویر و فیلم ها استفاده شود. همچنین میتوانید این کار را با مشخص کردن نسبت ابعاد باکس ها در CSS انجام دهید.

راهکار دوم: کاهش layout shift ناشی از تبلیغات ، embed ها و iframe ها:

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

راهکار سوم: جلوگیری از Flash of Invisible Text (FOIT) : مسئله Flash of Invisible Text (FOIT) می تواند CLS صفحه شما را تحت تأثیر قرار دهد. با preload کردن فونت ها و یا استفاده از ویژگی font-display، اطمینان حاصل کنید که متن شما هنگام بارگیری فونت وب نیز قابل مشاهده است.

توجه: این بهینه سازی در دسته اقدامات پیشرفته قرار می گیرد بنابراین توصیه می کنیم از یک متخصص کمک بگیرید.


منبع مقاله : GT metrix – Lighthouse: Avoid large layout shifts

حل مشکل Minimize main-thread work

main-thread محلی است که مرورگر قسمت اعظمی از دستورات مربوط به بارگذاری صفحه شما را پردازش می کند. مانند ارائه / چاپ محتوا یا مدیریت تعامل کاربر. در واقع main-thread فرایندهای بارگیری صفحه شما را کنترل می کند. سرعت بارگیری صفحه شما به میزان کارهایی که main-thread باید انجام دهد بستگی دارد. شما باید که اطمینان حاصل کنید main-thread برای مدت طولانی مشغول نباشد.

برخی از کارهای مرورگر که در main-thread اجرا می کند شامل موارد زیر است:

  • دست زدن به طرح بندی ها
  • تجزیه CSS و HTML
  • ساخت Document Object Model (DOM)
  • اجرای تمام JavaScript ها

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

با به حداقل رساندن کار main-thread ، مرورگر شما صفحه را برای انجام کار های ضروری آزاد می کند.

main-thread به چه مواردی بستگی دارد؟

بسته به طولانی بودن مدت main-thread در هنگام بارگیری صفحه ، GTmetrix این بررسی را آغاز می کند و زمان صرف شده را در دسته های مختلف طبقه بندی می کند ، از جمله:

  • ارزیابی اسکریپت
  • سبک و چیدمان
  • رندر گیری
  • تجزیه HTML و CSS
  • تجزیه و تدوین اسکریپت
  • مجموعه Garbage

در هنگام مشاهده گزارش جی تی متریکس با کلیک بر روی هر کدام از اشکالات مطرح شده در گزارش جی تی متریکس ، زمان صرف شده برای رویدادهای مختلف در main-thread مشخص می شود.

Minimize main-thread work

main-thread رویدادهایی مانند تجزیه HTML / CSS ، اجرای جاوا اسکریپت و غیره … را برای انجام مدیریت تعامل کاربر یا انجام کارهای دیگر مسدود می کند.

اجرای جاوا اسکریپت معمولاً قسمت عمده ای از main-thread را تشکیل می دهد. به همین دلیل سایت هایی که از جاوا اسکریپت های زیادی استفاده می کنند کمی با کند شدن اجرا همراه هستند. به طور کلی ، هرچه JavaScript صفحه شما بیشتر باشد ، فرایند تجزیه / جمع آوری طولانی تر است.

جاوا اسکریپت با اجراهای طولانی (A ، B ، E در بالا) ممکن است main-thread را برای مدت طولانی مسدود کند و از اجرای سایر کارهای لازم برای چاپ اولین صفحه شما جلوگیری کند. دوباره به مثال پبشخدمت برمی گردیم ، کاهش کارهایی که پیشخدمت باید انجام دهد ، به سرعت بخشیدن خدمات و بهبود تجربه کلی رستوران کمک می کند. 
Minimize main-thread work

چگونه main-thread را به حداقل برسانیم؟

به حداقل رساندن کار main-thread حتما باید توسط یک فرد متخصص انجام شود. برای برطرف کردن این مشکل باید فعالیت های زیر را انجام داد:

  • کاهش زمان صرف شده در ارزیابی اسکریپت ها
  • به حداقل رساندن محاسبه مجدد استایل ها و طراحی ها
  • کاهش زمان صرف شده در تجزیه CSS / HTML / JavaScript
  • جلوگیری از تأخیر در ارائه پیکسل های صفحه

برخی از استراتژی های مورد استفاده برای دستیابی به موارد فوق عبارتند از:

  1. بهینه سازی third-party JavaScript :کد third-party وب سایت خود را بررسی کنید و مواردی را که هیچ ارزشی برای وب سایت شما ندارند را حذف کنید. با به تعویق انداختن اسکریپت های غیر مهم اسکریپت های دیگر را بهینه کنید، ایجاد ارتباطات اولیه با دامنه های مهم third-party ، بارگذاری آهسته عکس ها (lazy-loading) محتوای جاسازی شده در third-party ، و بهینه سازی هاست.
  2. استفاده از web workers :برای دور نگ داشتن جاوا اسکریپت از main-thread و بهبود عملکرد صفحه خود ، از web workers استفاده کنید. (مطالعه برای کسب اطلاعات بیشتر)
  3. کاهش زمان اجرای جاوا اسکریپت:با تقسیم کد ، کوچک کردن و فشرده سازی کد جاوا اسکریپت ، حذف کد استفاده نشده و پیروی از الگوی PRPL ، از میزان حجم JavaScript خود کم کنید. (مطالعه برای کسب اطلاعات بیشتر)
  4. کاهش زمان تجزیه CSS :با کم کردن یا به تعویق انداختن CSS غیر ضروری یا حذف CSS بدون استفاده ، زمان تجزیه CSS را کاهش دهید.

منبع مقاله : Minimize main-thread work

اشتراک
Notify of
guest
0 دیدگاه ها
Inline Feedbacks
View all comments