مرکز آموزش
-
First Byte Time یا TTFB چیست ؟
First Byte Time یا TTFB چیست ؟
Time to First Byte یا First Byte Time برخی اوقات به منظور محاسبه سرعت وب سرور به اولین Request یادرخواست انجام می گیرد و سیستم های عمومی تست وب آن ها را گزارش می دهد.
هرچه مقدار کمتر باشد سرعت پاسخگویی وب سرور بهتر است ( در تئوری ) اما این تئوری پایه ریزی مناسبی ندارد و کاملا صحیح بنا نشده است.
ویکی پدیا First Byte Time را بدین صورت تعریف کرده است که : "مدت زمانی که به طول می انجامد تا یک کاربر مجازی یک درخواستHTTP را توسط مرورگر از وب سرور دریافت نماید." اما سیستم های مشهور و عمومی تست سایت چه چیزی را گزارش می دهند ؟برای متوجه شدن این موضوع ما یک وقفه زمانی در HTTP Response قرار دادیم تا متوجه شویم چه چیزی مورد بررسی و اندازه گیری قرار می گیرد. پاسخ این سوال یک شوک بسیار بزرگ بود و نشان می داد که First Byte Time مقدار جالبی برای اندازه گیری نیست !
هنگامیکه یک مرورگر درخواست یک صفحه را از وب سرور می کند ، مرورگر اقدام به ارسال درخواست از سوی خود می نماید و مقادیری مانند Acceptable Formats، نوع درخواست و ... را در header درخواست قرار می دهد تا پاسخ درخواست را به صورت صحیح دریافت نماید. سرور نیز پس از آن اقدام به پاسخ با یک وضعیت مشخص می نماید که به طور مثال به صورت " HTTP/1.1 200 OK " می باشد که نشان می دهد صفحه مورد نظر وجود دارد و این عملیات به صورت پشت هم انجام می گردد تا اطلاعات یا CONTENT صفحه به صورت کامل که شامل فایل ها، متن ها، استایل ها و ... می شود از سوی مرورگر دریافت گردد.
وب سرویس های مختلف همانند NGINX , Litespeed , Apache , ... در شرایط مختلف پاسخ های کاملا متفاوتی به سیستم های تست First Byte Time می دهند. به طور مثال برخی از آن ها بدین صورت عمل می کنند که لحظه ای که درخواست به وب سرور ارسال می شود سریعا کد HTTP/1.1 200 OK را بدون وقفه باز می گردانند و سپس مدت زمانی صبر می نمایند تا مابقی اطلاعات صفحه را ارسال نمایند. دلیل این موضوع هم بسیار ساده و شگفت انگیز است، خصوصیت DDOS Protection , Cache Mode , ... این عملیات را انجام می دهد که قرار نیست تمامی مطالب و اطلاعات سریعا پس از دریافت درخواست از سوی کاربر به مرورگر ارسال شود، این عملیات بسیار بسیار مفید است و خیلی ساده لوحانه می باشد که فکر کنیم هر چه FBT کوچکتر باشد وضعیت وب سایت ما بهتر است. در نهایت برای توضیح پایانی این قسمت از مقاله، سیستم های مختلف به گونه های متفاوتی درخواست های را ارسال می کنند به طور مثال header request مرورگر شما به موتور جستجو گوگل کاملا متفاوت رفتار می کنند و Agent های مختلف درخواست کننده کاملا متفاوت می باشند.
اگر شما از سیستم WebPageTest درخواست کنید که وب سایتی با این خصوصیت را بررسی نماید حتما شوکه خواهید شد زیرا در مقدار زمان کمی کد FTB را دریافت می کنید اما آیا این نشان از این می باشد که اطلاعات دیگر که مورد استفاده کاربر است و نشان دهنده وب سایت اوست دریافت شده است ؟ پاسخ خیر است پس هر چه First Byte Time کوچکتر باشد نشانه این نیست که سرعت وب سایت شما بسیار بسیار خوب است و وب سایت شما برای Search Engine بهینه شده است !
نکته مقابل این مورد نیز وجود دارد بدین صورت که وب سرویس هایی که از خصوصیت GZIP استفاده می کنند چون ایجاد بسته فشرده سازی شده زمانبر است عملا مقدار First Byte Time کمی از حالت قبلی بالاتر است اما این نکته قوت وب سایت و وب سرویس شما را نشان می دهد ! بله مقدار زمان بیشتری بابت دریافت اولین پاسخ از سوی وب سرویس طول می کشد اما بهتر است، پاسخ آن نیز خیلی ساده است چون اولین بایت دریافتی مهم نیست و کاربر، روبات موتور جستجو و ... به دنبال دریافت اطلاعات کامل یک صفحه می باشند و نه 1 بایت اول وب سایت و چون اطلاعات شما به صورت فشرده سازی شده در آمده است زمان بسیار کمتری بطول می انجامد که مرورگر کل اطلاعات را دریافت کند و به همین دلیل سرعت بارگزاری کلی صفحه بسیار بالاتر می رود.
نکته بسیار مهم این موضوع این است که مقدار First Byte Time شاخص خوبی برای اندازه گیری کیفیت وب سایت شما نمی باشد و عملا ارتبط بین چندین سیستم مختلف است که می تواند توان پاسخگویی و سرعت وب سرویس شما را مورد بررسی قرار دهد و عملا این تفکر خیلی غیر معقول می باشد که موتورهای جستجو به وب سایت هایی که First Byte Time آن ها مقدار کمی است اولویت بهتری دهند.
در ویکی پدیا مقایسه بسیار جالبی انجام شده است که به شرح زیر می باشد.
حالت No compression (gzip off)
مقدار First Byte Time برابر 213 نانو ثانیه است و مقدار Page Load Time برابر 43 هزارم ثانیه
در حالت Compressed (gzip on)
مقدار First Byte Time برابر 1.7 هزارم ثانیه و مقدار Page Load Time برابر 8 هزار ثانیه
حالت اول مقدار First Byte Time به مقدار 1 میلیون بار از حالت دوم کوچک تر است اما Page Load Time 5 برابر بزرگ تر می باشد و زمان اولیه بارگزاری سایت در حالت اول برابر 0.043000213 ثانیه است اما مقدار در حالت دوم برابر 0.0097 است که 4 برابر از حالت اول کوچک تر است و این نشانه این می باشد که First Byte Time پایین کمکی به بارگزاری سریع وب سایت شما نمیکند!