معیارهای First Input Delay (FID) چیست؟
مدت زمان تاخیر در اولین ورود(First Input Delay) یا به اختصار همان FID یک معیار مهم و کاربر محور برای اندازهگیری سرعت پاسخگویی یک سایت است. این معیار کمک میکند تا بدانیم کاربران در تعامل با سایت ما در چه وضعیتی قرار دارند و به اصطلاح سایت ما چقدر پاسخگویی مناسبی دارد.
FID یا First Input Delay چیست؟
اگر بخواهیم به صورت دقیق به بررسی اینکه FID چیست بپردازیم، اجازه دهید با یک مثال آغاز کنیم.
فکر کنید که قرار ملاقات کاری را برنامه ریزی کردید و قرار است در همکاری با فردی اتفاقات موفق و شیرینی را رقم بزنید. جدایی از اینکه مسئله کسب و کار و تخصصهای دو طرف اهمیت دارد، موضوع مهمتری هم که وجود دارد در هنگام اولین ملاقات رخ میدهد. اینکه شما در اولین دیدار خود با فرد مورد نظر تا چقدر موفق عمل کردید و اصطلاحا حس مثبت ایجاد شده است؟ آیا فرد مقابل از رفتار و اخلاق شما راضی بوده است؟
در دنیای وب نیز همین مسئله صدق میکند. زمانی که شما روی یک لینک، دکمه، تصویر، بخشی از المان js و هر چیزی که با کلیک روی آن درخواستی سمت سرور ارسال شده و پاسخی به شما داده شود ارسال میکنید، انتظار میرود که در زمان مناسب و به شکل مناسب پاسخ را دریافت کنید.
در دنیای اینترنت FID به این معنی است که وقتی شما روی المانی کلیک کردید چه مدت زمانی طول میکشد تا پاسخی به آن داده شود. این موضوع جدایی از سایر ساختارهای Core Web Vitals همچون FCP، TTFB و… است.
مسئلهای که در خصوص تاخیر ورودی باید به آن دقت کنید این است که این تاخیر درواقع زمان تاخیرها را محاسبه میشود که از روی نام آن کاملا واضح است. یعنی قرار نیست که مدت زمان اجرای پردازشها انجام گیرد؛ بلکه برای هر رویدادی که انجام میشود، مدت زمان اولین کلیک که باعث اجرای درخواست شده ثبت شده و سپس مدت زمانی که پاسخ به آن داده و اجرا میشود نیز ثبت خواهد شد. در نهایت مقدار تاخیری که برای اجرای این درخواست ایجاد شده محاسبه خواهد شد که این تاخیر در روند اجرای درخواست، در واقع همان FID است.
هدف از FID این است که به عنوان معیاری برای به حداقل رساندن تاخیر در اجرای درخواستها باشد. اینطور فکر کنید که در گذشته از سرویسهای کوتاه کننده لینک طوری استفاده میشد که مدت زمانی را برای انتقال کاربر به مقصد در نظر میگرفتند و چیزی مانند ۱۰ ثانیه کاربر باید منتظر میماند تا به لینک مقصد هدایت شود. چنین چیزهایی در واقع مثالی از تاخیر هستند که شما نباید برای پاسخ دادن به درخواست کاربران، موجب تاخیر در اجرای درخواست وی شوید. حال این تاخیر عمدی باشد یا اینکه به دلیل بهینه نبودن ساختار برنامه نویسی سایت رخ داده باشد.
بهترین امتیاز FID چند است؟
بهترین زمان برای پاسخگویی سریع به کاربر در سایت و اصطلاحا تعامل سریع، برای FID چیزی در حدود زیر ۱۰۰ میلیثانیه است. بسته به اینکه شما چه تعداد صفحاتی در سایت خود دارید، برای اینکه امتیاز میانگین بالا و مورد قبولی دریافت کنید، باید تمامی صفحات شما در مجموع میانگین ۷۵ درصدی را چه برای موبایل و چه دسکتاپ کسب کرده باشند.
اگر یک تعامل فاقد رویداد باشد چه اتفاقی رخ میدهد؟
همانطور که گفته شد FID به این معنی است که کاربر درخواستی را به سمت سرور ارسال کرده و پاسخ به آن داده شود که اصطلاحا به چنین درخواستهایی در FID رویداد گفته میشود.
حال چه اتفاقی رخ میدهد اگر یک تعامل فاقد رویداد باشد یا اینکه رویداد وابسته به این باشد که کاربر ابتدا چیزی را تکمیل کند؟
به عنوان نمونه پر کردن یک فرم را بررسی میکنیم.
زمانی که شما یک فرم مانند فرم تماس را تکمیل میکنید، در واقع FID همچنان در حال بررسی و محاسبه است. چرا که در این فرم انواع فیلدهای متنی، انتخابی، رادیویی و… وجود دارد که هر یک باید با ساختار درستی وارد شوند.
به عنوان مثال اگر یک فیلد برای وارد کردن شماره موبایل داشته باشیم، نمیتوان فرمت اشتباهی را در آن وارد کرد. شماره تلفن ما ۱۱ رقم است که حتما باید با این تعداد ارقام آن را وارد کنیم؛ در غیر این صورت خطا رخ داده و رویداد ناموفق ارسال خواهد شد.
در چنین حالتی چون رویداد وابسته است و رویداد اصلی هنوز بیکار نشسته و اتفاقی رخ نمیدهد، محاسبات انجام گرفته و سپس بر اساس زمانی که رویداد اصلی باید اجرا شود در آن دخیل خواهد شد تا آمار دقیقتری ثبت شود.
چرا باید فقط ورودی اول FID را در نظر بگیرید؟
از آنجایی که انواع مختلفی از رویداد وجود دارند، وجود تاخیر در یکی از آنها میتواند موجب ایجاد تجربه بد برای کاربر شود که در این صورت اولین رویداد نقش بسیار مهمی دارد.
فرض کنید کاربری در یک صفحه لندینگ قرار دارد. قرار است روی یک تب کلیک کند تا فرمی برای ارسال درخواست نمایش داده شود. اگر این تب یا دکمه برای اجرا شدن دارای انیمیشنهای مختلفی باشد که موجب تاخیر در اجرای درخواست باشد یا اینکه به دلیل حجم بالای جاوا اسکریپت دیرتر اجرا شود، میتواند موجب ایجاد تعامل بد برای کاربران شود.
بنابراین بهتر است که به منظور بهبود چنین تعاملاتی به جای استفاده از یک دکمه برای نمایش فرم، مستقیما خود فرم را نمایش دهید. چرا که هم در دید مستقیم کاربر قرار دارد و بهتر متوجه درک مسئله ارسال درخواست میشود و هم اینکه تاخیر FID را از بین خواهد برد.
چه چیزی به عنوان اولین ورودی به حساب میآید؟
همانطور که گفتیم FID رویدادی است که تعمل را بر اساس رفتار کاربر که با کلیک کردن، ضربه زدن، فشار دادن دکمههای صفحه کلید، اسکرول کردن، زوم کردن و… بررسی میکند.
در این بین اسکرول کردن و زوم کردن با توجه به اینکه به شکلی هستند که تعاملی پیوسته را به دنبال دارند و از طرفی دیگر میتوانند وابسته به تنظیمات سیستم عامل و مرورگر(با توجه به تنظیماتی همچون مقدار اسکرول) باشند، بنابراین جدا از سایر موارد قرار داشته و اهمیت کمتری دارند.
اما رویدادهای اولیه که روی واکنش پذیری صفحه تمرکز دارند و با آنها تغییرات گستردهای در صفحه وب میتواند رخ دهد، اولویت بالاتری داشته و نقش اساسی در سرعت و پاسخگویی FID خواهند داشت.
اگر کاربر هرگز با سایت شما تعامل نداشته باشد چه اتفاقی رخ میدهد؟
با توجه به انواع FID که ذکر کردیم، ممکن است یک کاربر تعاملات زیادی با صفحه وب شما داشته باشد و کاربر دیگری صرفا به اسکرول کردن در صفحه بپردازد که تعامل بسیار پایینتری دارد.
در نتیجه برای بهدست آوردن کلی مقدار FID برای صفحه نیاز است که ردیابی دقیقی از هر دو گروه از این کاربران داشته باشیم تا میانگین آنها حاصل شود.
همه تعاملاتی که توسط کاربران در هر دو گروه انجام میگیرد، مربوط به FID نبوده و موارد دیگری نیز در آنها دخیل هستند که مهمترین آن این است که آیا تعاملی که صورت میگیرد وابسته به یک تعامل دیگر(بیکار) خواهد بود یا نه؟ درست مانند فرمهای تماس که آنها را مثال زدیم.
آیا فقط باید تاخیر ورودی را در نظر گرفت؟
با توجه به اینکه FID تاخیر ورودی را بر اساس تعاملات کاربران اندازه گیری میکند، میتوان به سادگی به کمک برنامه نویسی از مواردی همچون ()setTimeout و ()requestAnimationFrame برای ایجاد تغییراتی در انجام پردازش المانها استفاده کرد.
در نتیجه این مورد باعث ایجاد تداخل و اشتباه در محاسبات FID خواهد شد. برای همین است که تاخیر در پردازش رویدادها به صورت مستقیم در این معیار گنجانده نمیشود.
استفاده از مواردی که توسعه دهندگان برای بهبود پردازش استفاده میکنند باعث ایجاد تجربه بد کاربری خواهد شد که برای همین به منظور جلوگیری از این مورد در این معیار گنجانده نمیشود.
نحوه اندازه گیری FID چگونه است؟
ابزارهای مختلفی برای اندازه گیری FID وجود دارند که به شما کمک میکنند مدت زمان تاخیر در ورودی را برای صفحات سایت خود اندازه گیری کنید.
این ابزارها با توجه به اینکه یک صفحه خاص را مورد بررسی قرار داده یا اینکه میتوانند امتیاز کلی را برای صفحات محاسبه کنند دارای امکانات متعددی بوده که برخی از آنها به صورت پرو در دسترس هستند.
نمونههایی از این ابزار عبارتند از:
- Chrome User Experience Report
- PageSpeed Insights
- Search Console (Core Web Vitals report)
- web-vitals JavaScript library
- پیچ اسپید اینساید چیست؟
در میان ابزارهای بالا، معیاری که توسط مرورگر گوگل کروم و سرچ کنسول محاسبه میشود لحظهای نبوده و مربوط به حداقل یک ماه قبل است. اما استفاده از page speed insights و web vitals این امکان را به شما خواهند داد تا به صورت لحظهای مقدار FID را اندازه گیری کنید.
ابزارهای دیگری نیز وجود دارند که با کمک API ارائه شده از ابزارهایی همچون page speed insights امکان ارائه گزارش را به صورت کلی برای چندین گروه از صفحات برای شما مشخص خواهند کرد.
راهکارهایی برای بهبود وضعیت FID
هر نوع بهینه سازی که روی فایلها و اجرای رویدادها انجام گیرد میتواند در بهبود FIDنقش اساسی داشته باشد. اگر بخواهیم در قالب یک چک لیست این مورد را بررسی کنیم میتوان به موارد زیر اشاره کرد:
- به حداقل رساندن جاوا اسکریپت و افزایش سرعت اجرای آنها
- فشرده سازی فایلهای جاوا اسکریپت و کدنویسی اصولی به منظور اجرای بهینه
- کاهش انیمیشنهای استفاده شده برای اجرا و نمایش المانها
- به حداقل رساندن کاری که قرار است به عنوان درخواست اصلی اجرا شود
- کاهش درخواستها برای اجرای رویداد. به عنوان مثال اگر قرار است کاربر فرمی را پر کند، به جای اینکه دکمهای برای نمایش فرم قرار دهید، مستقیما فرم را به کاربر نمایش دهید.
- کاهش استفاده از کدهای شخص ثالث و خارجی
- هماهنگ سازی برنامه نویسی سایت متناسب با جدیدترین تغییرات روی مروگرها
- و…