احتمالا عبارت Time to First Byte را شنیده یا حداقل در سایت های آنالیز وب سایت مانند gtmetrix با آن روبرو شده اید. برخی افراد از این پیام چشم پوشی می کنند. زیرا به نظر می رسد رفع آن فوق العاده پیچیده بوده یا پیام آن یک مفهوم کلی است. در واقع TTFB یا مدت زمان لود اولیه وب سایت یک مفهوم یا ایده نیست که فقط افراد متخصص آن را درک کنند، بلکه همه باید معنای آن را بدانند و بتوانند آن را در عمل به کار ببرند.
TTFB یا مدت زمان لود اولیه وب سایت چیست؟
Time to First Byte یا TTFB به معنای "مدت زمان دریافت اولین بایت"، یک واحد اندازه گیری می باشد که به عنوان معیاری برای ارزیابی پاسخگویی وب سرور یا سایر منابع شبکه استفاده می شود.
"مدت زمان دریافت اولین بایت" یا Time to first byte که به اختصار "TTFB" نیز نامیده میشود، معیاری برای اندازهگیری مدت زمان پاسخگویی یک وب سرور یا دیگر منابع شبکه می باشد. این مقدار از مدت زمان اتصال سوکت، مدت زمان ارسال درخواست HTTP و زمان صرف شده برای دریافت اولین بایت صفحه، تشکیل شده است. TTFB یا مدت زمان لود اولیه وب سایت مربوط به تاخیر شبکه در هنگام دریافت اطلاعات می باشد.
به زبان ساده تر، Time to First byte به مدت زمان طی شده پس از وارد کردن نام دامنه در مرورگر تا لحظه دریافت اولین بایت از سرور، اشاره دارد.
چه عواملی بر Time to First byte تأثیر می گذارند؟
مدت زمان دریافت اولین بایت، به عوامل متعددی بستگی دارد، در این مقاله مواردی که بر TTFB یا مدت زمان لود اولیه وب سایت وردپرسی تاثیرگذار می باشند به صورت دقیق بررسی می شود.
- زمان پاسخگویی DNS
- پیکربندی و عملکرد سرور (PHP و وب سرور)
- افزونه ها و قالب های وردپرس
- فعال سازی و غیرفعال سازی کش HTML
توجه: از این بخش مقاله به بعد، از مخفف TTFB برای نشان دادن Time to First Byte استفاده خواهد شد تا کمی سرعت مطالعه مقاله افزایش یابد.
هر یک از موارد اشاره شده، به تنهایی می توانند باعث ایجاد تاخیر در لود سایت شوند. بنابراین در یک سناریوی ایدهآل، باید همه چیز سریع باشد تا زمان TTFB کاهش یابد. در نظر داشته باشید که هر کدام از عوامل اشاره شده می تواند زمان بیشتری برای پردازش نیاز داشته باشد که در TTFB سایت تاثیرگذار خواهد بود.
TTFB یا مدت زمان لود اولیه وب سایت فاکتور بسیار مهمی است زیرا روی فعالیت مدیران و بازدیدکنندگان سایت تاثیر می گذارد. در واقع هر بار که کاربر روی یک لینک، تصویر، پست وبلاگ یا هر صفحه ای از سایت کلیک می کند، TTFB در لود آن تاثیر گذار خواهد بود. اگر TTFB سایت استاندارد نباشد، کاربر همانند گیمری خواهد بود که به یک سرور ضعیف با Ping بالا متصل است و تجربه ای بد را برای کاربر به جا می گذارد.
1. زمان پاسخگویی DNS
کیفیت DNS اولین عامل تاثیرگذار در این معادله است. همیشه از سرورهای DNS مناسب استفاده نمایید. یک راه خوب برای کاهش TTFB، استفاده از یک سرویس جهانی عالی مانند CloudFlare است. این سرویس، کش جهانی DNS را پیاده سازی نموده که باعث کاهش TTFB سایت ها می شود.
2. پیکربندی سرور
دومین عامل تاثیر گذار در TTFB یا مدت زمان لود اولیه وب سایت، سرور اصلی سایت می باشند. بسیاری از کاربران از هاست برای میزبانی سایت خود استفاده می کنند که نوع پیکربندی وب سرور و تکنیکهای کشی که در آنها پیاده سازی شده است می تواند باعث کاهش TTFB شود. به عنوان مثال، اگر سرور از نسخه قدیمی PHP 5.4 استفاده کند، به احتمال فراوان TTFB بالایی خواهید داشت، در حالی که استفاده از نسخه php 7.4 این زمان را به میزان 2 برابر یا بیشتر، کاهش می دهد.
کاهش زمان به این دلیل است که نسخه PHP نقش مهمی در فرآیند لود سایت ایفا می کند. هر بار یک صفحه از سایت که کش نشده است، درخواست می شود، سرور باید فایلهای PHP موردنظر را پردازش کند تا آنها را در قالب HTML به مرورگر کاربر تحویل دهد. هرچه فایلهای PHP پیچیدهتر باشند، زمان بیشتری طول میکشد تا کدها پردازش و به مرورگر کاربر ارسال گردند.
عملکرد سرور نیز نقش مهمی در کل فرآیند خواهد داشت. هرچه CPU سریعتر و هاست دارای منابع بیشتری باشد، فایل ها سریع تر پردازش می شوند و TTFB سایت نیز کاهش می یابد.
چنانچه هاست از یک کش PHP استفاده کند، درخواست دوم کاهش بیشتری خواهد داشت، زیرا به جای پردازش مجدد فایل PHP، سرور نسخه کش شده آن را ارائه میدهد.
3. افزونه ها و قالب های وردپرس
سومین مورد تاثیر گذار در TTFB کدهای سایت می باشد. به طور معمول وردپرس چندین فایل PHP را برای پردازش به هاست ارائه می دهد و هرچه کدها پیچیده تر باشند، پردازش آنها نیز زمان بیشتری طول می کشد. وردپرس اغلب توسط افزونه ها مدیریت میشود و افزونه ها کدهای اضافی را به پردازش نهایی PHP اضافه میکنند. بنابراین هر چه تعداد افزونه های فعال بیشتر باشد، هاست زمان بیشتری برای پردازش کدها نیاز دارد و در نتیجه TTFB افزایش خواهد یافت.
هر چه کمتر، بهتر است
به عنوان یک قاعده کلی، استفاده از افزونه های کمتر، باعث بهبود بیشتر TTFB یا مدت زمان لود اولیه وب سایت می شود. البته لازم به ذکر است که یک افزونه با کدنویسی ضعیف، می تواند بدتر از 10 افزونه با کدنویسی حرفه ای باشد. همچنین استفاده از افزونه های زیاد، احتمال تداخل در اجرای دو افزونه با یکدیگر را نیز افزایش می دهد اما به طور کلی کاهش تعداد افزونه های مورد استفاده، مدیریت و بروزرسانی آنها را بهبود بخشیده و سرعت سایت را نیز افزایش می دهد. پیشنهاد می شود بین 6 الی 10 افزونه با کدنویسی حرفه ای استفاده نمایید. استفاده از تعداد بالاتر، می تواند مشکل ساز شود. البته لازم به ذکر است که این مورد کاملا به کدنویسی افزونه های نصب شده بستگی دارد.
همچنین حتی اگر از یک سرویس میزبانی بسیار قدرتمند برخوردار باشید، نصب بیش از 30 الی 40 افزونه به هیچ عنوان مناسب نیست و به احتمال بسیار فراوان، TTFB بسیار بالایی خواهید داشت.
4. HTML Caching
مهم ترین و آخرین عامل موثر در TTFB یا مدت زمان لود اولیه وب سایت، مکانیزم کش می باشد که باید تصمیم بگیرید در وردپرس خود پیاده سازی نمایید. اگرچه مکانیزم های مختلفی از کش وجود دارند اما موثرترین کش وردپرس، HTML Caching می باشد.
چرا TTFB یا مدت زمان لود اولیه وب سایت مهم است؟
موارد زیر نمونه هایی واقعی از پیکربندیهای مختلف وبسایت در سرورهای مختلف است که در پایان می توانید یک خلاصه از عملکرد کلی آنها را مشاهده نمایید.
یک وب سایت کند روی یک سرور کند
داشتن یک سایت کند می تواند برای TTFB یا مدت زمان لود اولیه وب سایت مشکل ساز باشد، چنانچه به داشتن یک سرویس میزبانی مناسب نیز اهمیتی نمی دهید، باید انتظار بدترین نتایج ممکن را داشته باشید.
تصویر(1)
در ادامه، یک نمونه سایت تجزیه و تحلیل می گردد. بدین منظور، از tools.pingdom.com استفاده می شود زیرا ابزاری عالی برای بررسی TTFB می باشد. پس از انجام تست، باید جزئیات بخش Response Header، مورد بررسی قرار گیرد.
تصویر(2)
در این تست، سایت دارای TTFB حدود 4.2 ثانیه است. به این معنا که 4 ثانیه کامل زمان نیاز است تا مشخص شود سایت واقعا در دسترس بوده و سپس اطلاعات آن دریافت شود.
حال زمان به دست آمده را در تعداد کلیک هایی که قرار است کاربر در سایت انجام دهد ضرب کنید تا به عمق فاجعه پی ببرید. البته TTFB یا مدت زمان لود اولیه وب سایت باید به کل زمان رندر سایت اضافه شود. در نتیجه عملکرد سایت فاجعه بار خواهد بود زیرا گاهی اوقات ممکن است لود صحیح سایت 7 ثانیه یا حتی بیشتر زمان ببرد.
عوامل متعددی مانند بهینه سازی سایت بدون استفاده از قابلیت کش، استفاده از سرویس میزبانی بسیار کند و استفاده از یک نسخه PHP منسوخ شده مانند PHP 5.4، در این امر تاثیرگذار می باشند. چنانچه میزبانی هاست و سایت عملکرد مناسبی نداشته باشند، استفاده از یک کش خارجی مانند cloudflare نیز تغییری در بهبود وضعیت ایجاد نمی کند.
اجرای یک وب سایت بهینه شده با کد نویسی حرفه ای روی یک سرور متوسط
تست زیر مربوط به یک سایت بهینه شده با کدنویسی حرفه ای روی یک سرور متوسط آپاچی و نسخه PHP 7.1 می باشد.
تصویر(3)
سایتی که کمتر از ده افزونه فعال دارد و قابلیت کش نیز روی آن فعال نیست، نتیجه آن حداقل 5 برابر بهتر از بررسی سایت قبلی می باشد. در بررسی انجام شده TTFB یا مدت زمان لود اولیه وب سایت روی 521 میلی ثانیه قرار دارد. در واقع به این معنا است که از زمان ارسال درخواست توسط کامپیوتر کاربر تا دریافت پاسخ اولیه از سرور، 0.5 ثانیه زمان می برد تا رندر در مرورگر کاربر آغاز شود.
تصویر(4)
اما زمانی که کش وب سایت فعال شود چه اتفاقی رخ می دهد؟ لود سایت روی یک سرور معمولی که روی آپاچی اجرا میشود، TTFB آن کمتر 180 میلیثانیه است که یک نتیجه بسیار عالی می باشد. اکنون می توانید متوجه شوید که فعال سازی کش وردپرس تا چه حد روی نتایج تأثیر گذار خواهد بود.
یک وب سایت بسیار کند روی یک سرور سریع
اگر یک سایت بسیار کند را روی یک سرور بسیار سریع قرار دهید چه اتفاقی رخ می دهد؟ نتیجه بررسی آن را می توانید در تصویر زیر مشاهده نمایید.
تصویر(5)
یک سرور بهینه سازی شده که کنترل پنل پلسک را با nginx و PHP 7.1 اجرا می کند، 1.29 ثانیه طول می کشد تا سایتی که از افزونه های بسیار زیاد استفاده می نماید را لود کند.
تصویر(6)
اما پس از فعال سازی افزونه کش KeyCDN، نتیجه شگفت انگیز می شود. TTFB یا مدت زمان لود اولیه وب سایتی که بسیار کند می باشد، به 400 میلی ثانیه کاهش یافته است.
یک وب سایت سریع روی یک سرور سریع
نتیجه بررسی یک سایت سریع که روی یک سرور سریع اجرا می شود، به شرح زیر می باشد.
تصویر(7)
همان سروری که TTFB آن برای یک سایت کند 1.29 ثانیه می باشد، یک سایت سریع و بدون کش را در کمتر از 500 میلی ثانیه لود می کند.
تصویر(8)
چنانچه کش نیز برای آن فعال شود نتیجه شگفت انگیز خواهد بود. یک سرور سریع، همراه با یک وب سایت سریع که کش آن نیز فعال است، TTFB آن کمتر از 150 میلیثانیه خواهد بود.
نتایج بررسی
حال در تصویر زیر می توانید تمامی نتایج را در یک نمودار مشاهده و مقایسه نمایید:
تصویر(9)
همانطور که قابل مشاهده است، سرور میزبان نقش مهمی در کاهش TTFB یا مدت زمان لود اولیه وب سایت و همچنین تاخیر و عملکرد سایت دارد اما کد نویسی اسکریپت، قالب و افزونه های فعال آن بیشترین تاثیر را خواهند داشت.
نتیجه گیری
داشتن یک TTFB خوب تضمین میکند که سایت سریع و واکنشگرا خواهد بود، TTFB یا مدت زمان لود اولیه وب سایت پایین، زمان رندر کلی سایت را کاهش میدهد و به عنوان یک معیار عالی برای تعیین عملکرد سایت عمل میکند. معمولا هر چه TTFB بالاتر باشد سرعت سایت نیز کندتر خواهد بود.
در نظر گرفتن TTFB در زمان بررسی سایت بسیار مهم است زیرا این زمان بندی می تواند برای انتخاب افزونه ها نیز مورد استفاده قرار گیرد اما در نظر داشته باشید که موارد بررسی شده به هیچ وجه یک معیار کلی برای همه وب سایت ها نیستند. زیرا عوامل دیگری از جمله عملکرد پایگاه داده، پهنای باند و سرعت شبکه نیز در TTFB دخیل هستند.