تأخیر ورودی اول یا FID یه معیار مهم و کاربر محور برای اندازه گیری میزان پاسخگویی به لود Load است. با این معیار تجربه ای رو که کاربران هنگام تعامل با صفحه های غیرریسپانسیو دارن رو شناسایی می کنه. اگه FID پایین باشه عملاً اون صفحه غیرقابل استفاده و بدردنخوره. FID یکی از معیارهاییه که توسط همه ابزارهای گوگل بررسی میشه و این معیارها تحت عنوان Core Web Vitals یا وایتال های وب از طرف گوگل معرفی شدن.

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

سوال اینجاست که چه چیزی باعث ایجاد یک احساس خوب می شود و چگونه میتونین برداشت و تصور کاربران سایت خودتون رو ارزیابی کنید؟

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

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

اولین تصور کاربرا از میزان سرعت بارگیری سایت شما با First Contentful Paint (FCP) یا اولین ترسیم محتوایی قابل اندازه گیری است. اما اینکه سایت شما چقدر سریع می تواند پیکسل های صفحه را ترسیم کنه، فقط یه قسمته از داستانه! به همان اندازه هم مهمه که ببینین سایت شما هنگام تعامل کاربرا با آن پیکسل ها یا ترسیم ها چقدر پاسخگو هست! معیار اولین تأخیر ورودی یا FID به سنجش اولین برداشت کاربر از تعامل و پاسخگویی سایت شما کمک می کند.

FID یا اولین تاخیر ورودی چیست؟

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

برای ارائه یک تجربه کاربری خوب، سایت ها باید تلاش کنند تا اولین تأخیر ورودی کمتر از ۱۰۰ میلی ثانیه باشه. برای اطمینان از دستیابی به این هدف

جزئیات بیشتر در مورد FID

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

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

جدول زمانی زیر رو برای بارگیری یه صفحه معمولی وب در نظر بگیرین:

FID-Base

عکس بالا داره چندتا درخواست برای منابع رو نشون میده (به احتمال زیاد پرونده های CSS و JS) ، و وقتی همه این منابع بارگیری شدن تازه دستور اصلی پردازش میشه. خب این یعنی چی؟ یعنی یه بازه های زمانی هست که سیستم همش مشغوله (قسمت های نارنجی رنگی که تو تصویر نشون داده شده).

تأخیرهای ورودی طولانی اول معمولاً بین First Contentful Paint (FCP) و Time to Interactive (TTI) اتفاق می افتن. چون صفحه ای که داره باز میشه، یه سری از مطالب رو ارائه داده اما هنوز جا داره که کاملاً تعاملی بشه.  برای این که این موضوع رو بهتر درک کنین، به عکس زیر یه نگاهی بندازین. تو عکس زیر، FCP و TTI به جدول زمانی اضافه شده اند:

fid-fcp-tti

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

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

fid-full

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

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

اگر تعامل Event Listener نداشت؟

FID دلتای بین زمان دریافت یک رویداد ورودی و زمانی که مرورگر بیکاره رو اندازه گیری می کند. این یعنی FID حتی در مواردی که شنونده رویداد یا Event Listener ثبت نشده باشه هم اندازه گیری میشه. دلیل این اندازه گیری هم اینه که خیلی از تعامل‌های کاربر به شنونده رویداد یا Event Listener احتیاج ندارن بلکه فقط لازمه که مرورگر بیکار باشه تا بتونه اون تعامل رو جواب بده.

مثلاً، تمام عناصر HTML ذیل زیر باید صبر کنن تا مرورگر کارش تموم بشه و بعد به درخواست های اونا پاسخ بده:

  • قسمت های متنی
  • Checkbox
  • دکمه های رادیویی Radio Buttons
  • انتخاب های دراپ داون Dropdown
  • لینک ها

تگ های معادل اونا میشه: <input> , <textarea> , <select> , <a>

چرا فقط تاخیر ورودی اول یا FID در نظر گرفته میشه؟

در حالی که تأخیر در هر ورودی می تواند به یک ناراحتی کاربر منجر بشه، ما اولین تاخیر ورودی اهمیت بیشتری داره که دلایلش رو الان میگیم:

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

اهمیت تاخیر ورودی اول یا FID

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

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

به یه زبان دیگه بخوایم بگیم ، FID بر روی R (پاسخگو بودن) در مدل عملکرد RA تمرکز دارد ، در حالی که پیمایش و بزرگنمایی بیشتر مربوط به A (انیمیشن) هست و باید کیفیت عملکرد آنها به طور جداگانه ارزیابی شود.

اگر کاربر هرگز با سایت تعامل نداشت، چی؟

همه کاربرا هر دفعه که میان سراغ سایت شما، باهاش تعامل ندارن. و البته همونطور که بالاتر هم گفتیم همه تعامل ها مربوط به  FID نیستن: مثل اسکرول کردن. ضمناً گاهی بعضی از این تعامل های اولیه کاربر در مواقع بدی انجام میشن (مثلاً وقتی که مرورگر به شدت درگیر یه کار دیگه است و اون کار هم خیلی طولانیه و حالا حالاها تموم نمیشه) و بعضی از تعامل های اولیه کاربر هم در وقت های خوبی انجام میشن (مثلاً وقتی مروگر بیکاره).

این یعنی بعضی از کاربرا اصلا تاخیری تو اولین ورودی احساس نمیکنن و در نتیجه این معیار FID واسه اونا صفره. در مقابل، بعضی از کاربرا هم هستن که مقادیر FID کم دارند و برخی از کاربران احتمالاً مقادیر FID بالایی دارند.

نحوه اندازه گیری FID

FID معیاری است که فقط در فیلد Feild قابل اندازه گیری است چون باید یه کاربر واقعی با صفحه شما تعامل داشته باشه. یعنی نمیشه از داده آزمایشگاهی برای اندازه گیری FID استفاده کرد.  تاخیر ورودی اول یا FID را با ابزارهای زیر میشه اندازه گیری کرد.

  • گزارش تجربه کاربر از مرورگر کروم Chrome User Experience Report
  • PageSpeed Insights
  • گزارش وایتال های وب از کنسول جستجو Search Console (Core Web Vitals report)
  • مانیتورینگ عملکرد Firebase (بتا) Firebase Performance Monitoring (beta)

تجزیه و تحلیل و گزارش FID

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

با این که صدک انتخابی برای همه آستانه های وایتال های وب ۷۵ است، اما برای FID اکیداً توصیه می کنیم به صدک های ۹۵ – ۹۹ توجه کنین. چون این موارد با اولین تجربه های بدی که کاربران در سایت شما داشتن، مطابقت دارد. و جاهایی از سایت رو که نیاز به بهبود بیشتری دارند بهتون نشان میده.

حتی اگه دارین واسه دستگاه های مختلف هم گزارش میگیرین … یعنی یه گزارش در مورد تجربه کاربرهایی که با موبایل صفحه سایت شما رو باز کردن و یه گزارش هم در مورد تجربه کاربرهایی که از روی کامپیوتر دسکتاپ Desktop به سایت شما سر زدن، بازم توصیه می کنیم همون صدک های ۹۵-۹۹  رو در نظر بگیرین و سعی کنین برای هر دو دسته کاربر دستکتاپ و موبایل تجربه خوب ایجاد کنین.