الگوریتم واکنش چیست؟ | تأثیر سرعت واکنشگرایی پایین بر سئو
مقدمه: الگوریتم واکنش چیست؟
آیا تا به حال روی دکمهای در سایت کلیک کردهاید و چند ثانیه هیچ اتفاقی نیفتاده است؟ این تجربه آزاردهنده ناشی از سرعت واکنشگرایی پایین است. الگوریتم واکنش (Vaakonesh) در کراولر پیشرفته P2X دقیقاً به همین موضوع میپردازد: آیا سرعت واکنشگرایی (INP) سایت شما پایین و نامطلوب است؟
الگوریتم واکنش از الگوریتمهای منفی سیستم P2X محسوب میشود. این الگوریتم بررسی میکند که صفحات سایت شما چقدر سریع به تعاملات کاربر (کلیک، ضربه، تایپ) پاسخ میدهند. اگر INP بالاتر از ۲۰۰ میلیثانیه باشد، امتیاز منفی تعلق میگیرد.
اما INP چیست و چرا اینقدر مهم است؟ در ادامه، همه چیز را بررسی خواهیم کرد.
INP (Interaction to Next Paint) چیست؟
INP مدت زمانی است که از تعامل کاربر (کلیک، ضربه، تایپ) تا نمایش تغییرات بصری بعدی در صفحه طول میکشد.
مثال:
کاربر روی دکمه «ثبت نام» کلیک میکند (زمان ۰) ↓ مرورگر درخواست را پردازش میکند ↓ جاوااسکریپت اجرا میشود ↓ صفحه بهروز میشود (تغییر بصری) ↓ زمان ثبت میشود (مثلاً ۱۵۰ میلیثانیه)
INP = ۱۵۰ میلیثانیه (خوب)
دستهبندی INP بر اساس کیفیت
| دسته | محدوده INP | وضعیت | توضیح |
|---|---|---|---|
| عالی | کمتر از ۱۰۰ میلیثانیه | ✅ عالی | پاسخگویی فوقالعاده سریع |
| خوب | ۱۰۰ - ۲۰۰ میلیثانیه | ✅ خوب | پاسخگویی قابل قبول |
| نیاز به بهبود | ۲۰۰ - ۵۰۰ میلیثانیه | ⚠️ هشدار - جریمه خفیف | کاربر احساس مکث میکند |
| ضعیف (جریمه) | ۵۰۰ - ۱۰۰۰ میلیثانیه | ❌ ضعیف - جریمه متوسط | کاربر احساس کندی میکند |
| بسیار ضعیف (جریمه شدید) | بیشتر از ۱۰۰۰ میلیثانیه | ❌ بسیار ضعیف - جریمه شدید | کاربر احساس «یخ زدگی» میکند |
نحوه عملکرد الگوریتم واکنش در P2X
الگوریتم واکنش به صورت دقیق و هوشمندانه طراحی شده است. مراحل اجرای این الگوریتم در کراولر P2X به این صورت است:
| مرحله | توضیح |
|---|---|
| ۱. شبیهسازی تعاملات | الگوریتم تعاملات واقعی کاربر (کلیک، تایپ، اسکرول) را شبیهسازی میکند |
| ۲. اندازهگیری زمان | الگوریست زمان پاسخگویی به هر تعامل را اندازهگیری میکند |
| ۳. محاسبه صدک ۷۵ | الگوریتم صدک ۷۵ (بدترین تعاملات) را به عنوان INP محاسبه میکند |
| ۴. تحلیل منابع کند | الگوریتم منابعی که باعث کندی شدهاند (جاوااسکریپت، CSS) را شناسایی میکند |
| ۵. امتیازدهی منفی | بر اساس میزان بالاتر بودن INP از ۲۰۰ میلیثانیه، امتیاز منفی تعلق میگیرد |
نکته مهم: INP بر اساس صدک ۷۵ (بدترین ۲۵٪ تعاملات) محاسبه میشود. یعنی اگر ۷۵٪ تعاملات سریع باشند اما ۲۵٪ کند باشند، INP تحت تأثیر تعاملات کند قرار میگیرد.
تفاوت INP با FID (نسخه قبلی)
| معیار | FID (قدیمی) | INP (جدید - از ۲۰۲۴) |
|---|---|---|
| اندازهگیری | فقط اولین تعامل | همه تعاملات |
| شامل چه تعاملاتی | فقط کلیک و ضربه | کلیک، ضربه، تایپ، کیبورد |
| دقت | کمتر | بیشتر (تصویر کاملتر) |
| تاریخ معرفی | ۲۰۲۰ | ۲۰۲۴ (جایگزین FID) |
نکته مهم: گوگل از مارس ۲۰۲۴ به طور کامل INP را جایگزین FID کرده است. دیگر FID مورد استفاده قرار نمیگیرد.
چرا INP پایین (کندی) برای سئو مضر است؟
INP پایین (یعنی زمان پاسخگویی بالا) از چند جهت برای سئو و تجربه کاربری مضر است:
| دلیل ضرر | توضیح |
|---|---|
| فاکتور رتبهبندی گوگل | INP یکی از سه معیار اصلی Core Web Vitals است |
| تجربه کاربری بد | کاربر احساس میکند سایت «یخ زده» یا «لاگ» است |
| افزایش نرخ پرش | کاربران از سایتهای کند و غیرپاسخگو فرار میکنند |
| کاهش تعامل | کاربران کمتر با سایت تعامل میکنند (کلیک، تایپ) |
| کاهش نرخ تبدیل | در فروشگاهها، کندی باعث کاهش فروش میشود |
چه عواملی باعث INP بالا میشوند؟
| عامل | توضیح | راهکار |
|---|---|---|
| جاوااسکریپت سنگین | کدهای JS طولانی و پیچیده | بهینهسازی و split کردن |
| تاخیر در event handlers | توابع سنگین در رویدادها | بهینهسازی و debouncing |
| رندر مجدد مکرر | بازسازی مکرر DOM | بهینهسازی رندر |
| محاسبات سنگین در main thread | حلقههای طولانی و محاسبات پیچیده | انتقال به Web Worker |
| درخواستهای شبکه همزمان | درخواستهای blocking | asynchronous کردن |
| فریمورک سنگین | React/Vue بدون بهینهسازی | بهینهسازی و code splitting |
معادل Google برای الگوریتم واکنش
الگوریتم واکنش در P2X معادل فاکتور "Interaction to Next Paint (INP)" در الگوریتمهای گوگل است. گوگل در مستندات رسمی خود اعلام کرده است:
"INP measures how quickly a page responds to user interactions. A good INP score is 200 milliseconds or less. Pages with poor INP can frustrate users and may rank lower in search results."
منابع معتبر گوگل برای مطالعه بیشتر:
تفاوت INP با LCP و CLS
| معیار | اندازهگیری | نوع مشکل |
|---|---|---|
| LCP | زمان بارگذاری محتوا | کندی در نمایش |
| CLS | ثبات بصری | جابجایی آزاردهنده |
| INP | پاسخگویی به تعاملات | کندی در واکنش |
نکته: این سه معیار، تجربه کاربری کامل را از سه زاویه مختلف اندازهگیری میکنند.
راهکارهای کاهش INP (افزایش سرعت واکنشگرایی)
برای اینکه از الگوریتم واکنش جریمه نشوید، این راهکارها را رعایت کنید:
۱. جاوااسکریپت را بهینه کنید
-
کدهای طولانی را به فایلهای کوچکتر split کنید
-
از async/defer برای بارگذاری JS استفاده کنید
-
کتابخانههای سنگین را با نسخههای سبکتر جایگزین کنید
<script src="heavy.js" defer></script>
۲. event handlers را بهینه کنید
// بد: عملیات سنگین در handler button.addEventListener('click', () => { heavyOperation(); // 500ms }); // خوب: عملیات سنگین با delay یا Web Worker button.addEventListener('click', () => { setTimeout(() => { heavyOperation(); }, 0); });
۳. از Web Workers برای محاسبات سنگین استفاده کنید
محاسبات سنگین را به thread جداگانه منتقل کنید تا main thread مسدود نشود.
۴. از debouncing و throttling استفاده کنید
برای رویدادهای مکرر (مثل اسکرول، تایپ) از debouncing استفاده کنید.
// debouncing برای رویداد تایپ input.addEventListener('input', debounce(() => { // جستجو }, 300));
۵. رندر مجدد را کاهش دهید
به جای بازسازی کامل DOM، فقط قسمتهای تغییر کرده را بهروز کنید.
6. از requestAnimationFrame برای انیمیشنها استفاده کنید
function animate() { // تغییرات DOM requestAnimationFrame(animate); }
اشتباهات رایج در الگوریتم واکنش
| اشتباه | توضیح | راهکار |
|---|---|---|
| جاوااسکریپت سنگین در main thread | کدهای طولانی بدون break | split و استفاده از setTimeout |
| event handlers بدون بهینهسازی | عملیات سنگین در handler | بهینهسازی و debouncing |
| فریمورک بدون code splitting | همه کدها در یک فایل | code splitting فعال کنید |
| رندر مجدد مکرر | بازسازی کل DOM | فقط بخش تغییر کرده را بهروز کنید |
| درخواستهای همزمان | درخواستهای blocking | از async استفاده کنید |
ابزارهای اندازهگیری INP
| ابزار | آدرس | توضیح |
|---|---|---|
| PageSpeed Insights | pagespeed.web.dev | اندازهگیری INP و ارائه راهکار |
| Chrome DevTools | F12 > Performance | اندازهگیری دقیق تعاملات |
| Web Vitals Extension | Chrome Web Store | اندازهگیری real-time |
| Search Console | search.google.com | گزارش Core Web Vitals |
تأثیر الگوریتم واکنش بر سئو و رتبه گوگل
| فاکتور | تأثیر |
|---|---|
| INP کمتر از ۲۰۰ میلیثانیه | بدون جریمه - تجربه کاربری خوب |
| INP بین ۲۰۰-۵۰۰ میلیثانیه | جریمه خفیف - افت نسبی رتبه |
| INP بیشتر از ۵۰۰ میلیثانیه | جریمه متوسط تا شدید - افت قابل توجه رتبه |
جمعبندی نهایی
الگوریتم واکنش (Vaakonesh) در کراولر P2X، یکی از الگوریتمهای منفی است که سرعت واکنشگرایی پایین (INP) را بررسی میکند.
سه نکته کلیدی که باید همیشه به خاطر داشته باشید:
-
INP باید کمتر از ۲۰۰ میلیثانیه باشد (ایدهآل کمتر از ۱۰۰ میلیثانیه) - INP یکی از سه معیار اصلی Core Web Vitals است و از مارس ۲۰۲۴ جایگزین FID شده است.
-
جاوااسکریپت را بهینه کنید، event handlers را سبک کنید و از debouncing استفاده کنید - این سه اقدام بیشترین تأثیر را بر کاهش INP دارند.
-
با ابزار PageSpeed Insights به طور منظم INP خود را اندازهگیری کنید - مانیتورینگ مداوم به شما کمک میکند مشکلات را زودتر تشخیص دهید.
با رعایت این اصول، میتوانید از جریمه الگوریتم واکنش در امان بمانید.
✍️ نظر خود را بنویسید