TTFB مخفف Time to First Byte و به معنی «زمان رسیدن اولین بایت» است.
وقتی شما آدرس یه صفحه رو داخل مرورگر وارد میکنید، مرورگر باید به سرور درخواست بده و منتظر بمونه تا اولین بایت از پاسخ برگرده. فاصله بین شروع درخواست تا رسیدن اولین بایت، TTFB نامیده میشه.
یه مثال ساده بزنیم. فرض کنید از کسی سؤال نسبتاً سختی میپرسید. اون شخص سؤال رو میشنوه، چند لحظه فکر میکنه، اطلاعات لازم رو از ذهنش بیرون میکشه و بعد اولین کلمه جواب رو میگه.
فاصله بین پرسیدن سؤال و شنیدن اولین کلمه، تقریباً همون نقشی رو داره که TTFB در سایت بازی میکنه.
دقت کنید که TTFB زمان کاملشدن جواب نیست. فقط میگه اولین نشونه از پاسخ چه زمانی رسیده. ممکنه اولین کلمه خیلی سریع گفته بشه، اما ادامه جواب ده دقیقه طول بکشه! برای سایت هم همینطوره؛ TTFB خوب بهتنهایی به معنی لود سریع کل صفحه نیست.
داخل زمان TTFB دقیقاً چه اتفاقی میافته؟
TTFB فقط زمان پردازش PHP یا پاسخ خود سرور نیست. در اندازهگیری واقعی کاربر، چند مرحله مختلف میتونن داخل این زمان قرار بگیرن:
مرورگر باید آدرس دامنه رو از طریق DNS به IP تبدیل کنه.
ارتباط شبکه با سرور برقرار میشه.
اگر سایت HTTPS باشه، مذاکره TLS انجام میشه.
اگر ریدایرکتی وجود داشته باشه، مرورگر باید مسیر جدید رو دنبال کنه.
درخواست به سرور میرسه.
سرور، وردپرس، PHP و دیتابیس درخواست رو پردازش میکنن.
اولین بایت پاسخ از سرور به مرورگر برمیگرده.
پس TTFB بالا میتونه از فاصله جغرافیایی، DNS، شبکه، ریدایرکت، هاست، کدنویسی، دیتابیس یا نبودن کش بیاد. به همین دلیل قبل از هر اقدامی باید بفهمیم سهم هر مرحله چقدره.
TTFB چه فرقی با سرعت لود کامل سایت دارد؟
این دو تا زیاد با هم اشتباه گرفته میشن، اما یکی نیستن.
TTFB فقط شروع دریافت پاسخ رو اندازه میگیره. بعد از رسیدن اولین بایت، مرورگر تازه باید HTML رو بخونه، CSS و JavaScript رو دانلود و پردازش کنه، فونتها و تصاویر رو بگیره و صفحه رو بسازه.
برای اینکه تفاوتشون روشنتر بشه، بارگذاری صفحه رو مثل ورود به یه رستوران ببینید:
TTFB: چقدر طول میکشه پیشخدمت بعد از سفارش، اولین چیزی رو روی میز شما بذاره.
FCP: اولین بخش قابلدیدن سفارش چه زمانی روی میز قرار میگیره.
LCP: غذای اصلی چه زمانی میرسه.
لود کامل صفحه: چه زمانی تمام سفارش شما آماده شده. ممکنه پیشخدمت سریع یه لیوان آب بیاره و TTFB عالی باشه، اما غذای اصلی خیلی دیر آماده بشه. در سایت هم ممکنه پاسخ سرور سریع شروع بشه ولی فایلهای سنگین باعث بشن صفحه دیر قابلاستفاده بشه.
چرا بعضی منابع هنوز عدد ۲۰۰ میلیثانیه را پیشنهاد میکنند؟
چون داشتن پاسخ زیر ۲۰۰ میلیثانیه برای خیلی از سایتها عالیه و بهعنوان یه هدف فنی بلندپروازانه مطرح میشه. اما این عدد، مرز رسمی فعلی بین TTFB خوب و بد نیست.
در راهنمای فعلی web.dev، ۸۰۰ میلیثانیه یا کمتر بهعنوان محدوده خوب معرفی شده. پس اگر TTFB شما ۴۰۰ میلیثانیهست، قرار نیست صرفاً چون زیر ۲۰۰ نیست، کل هاست رو عوض کنید.
اول ببینید تجربه واقعی کاربران و بقیه شاخصهای سرعت چه وضعیتی دارن.
چرا TTFB سایت بالا میرود؟
برای رفع مشکل TTFB ابتدا باید علت را پیدا کرد. رایجترین دلایل عبارتاند از:
۱) هاست ضعیف :
اگر منابع سرور کافی نباشد، درخواستها برای پردازش منتظر میمانند.
در سایتهایی که ترافیک بالایی دارند، محدودیت CPU، RAM، I/O یا پردازشهای PHP میتواند باعث افزایش زمان پاسخ شود.
۲) افزونههای سنگین :
در وردپرس، افزونهها میتوانند هنگام تولید یک صفحه عملیات مختلفی انجام دهند.
برخی افزونهها کوئریهای زیادی اجرا میکنند، برخی با سرویسهای خارجی ارتباط برقرار میکنند و برخی دیگر پردازشهای سنگین PHP دارند.
در نتیجه حتی یک صفحه ساده میتواند قبل از ارسال پاسخ، زمان زیادی برای پردازش نیاز داشته باشد
۳) دیتابیس بهینهنشده :
وردپرس برای تولید صفحات به اطلاعات دیتابیس وابسته است.
اگر کوئریها سنگین باشند یا جداول بزرگ و بدون بهینهسازی مناسب باشند، زمان پردازش درخواست افزایش پیدا میکند.
۴) نبود کش مناسب :
اگر هر درخواست مجبور باشد از ابتدا توسط PHP و دیتابیس پردازش شود، فشار روی سرور افزایش پیدا میکند.
کش صفحه میتواند در بسیاری از درخواستها باعث شود پاسخ از قبل آماده شود و زمان پردازش کاهش یابد.
۵) ارتباط با سرویسهای خارجی :
گاهی یک افزونه برای تولید صفحه به سرویس دیگری درخواست ارسال میکند.
اگر سرویس خارجی کند باشد، پاسخ صفحه نیز ممکن است به تأخیر بیفتد.
۶) تنظیمات نادرست سرور :
تنظیمات PHP، وبسرور، OPcache و منابع اختصاصیافته میتوانند روی زمان پاسخ تأثیر داشته باشند.
چگونه بفهمیم مشکل TTFB از هاست است؟
برای پاسخ به این سؤال، باید چند نشانه را بررسی کرد.
تمام صفحات سایت کند هستند،
TTFB در زمانهای مختلف بالا میرود،
CPU یا RAM مرتباً به سقف میرسد،
PHP Workers پر هستند،
دیتابیس منابع زیادی مصرف میکند،
سایت در ساعات پرترافیک بهشدت کند میشود،
احتمال وجود مشکل در منابع یا تنظیمات سرور بیشتر است.
اما اگر فقط یک یا چند صفحه خاص کند هستند، بهتر است ابتدا افزونهها، کوئریها و ساختار همان صفحات بررسی شوند.
TTFB و سئو چه ارتباطی دارند؟
TTFB بهتنهایی یک معیار مستقیم برای رتبهبندی نیست که بتوان گفت مثلاً کاهش آن از 700 به 200 میلیثانیه حتماً باعث افزایش رتبه خواهد شد.
با این حال، پاسخ سریعتر سرور میتواند به بهبود عملکرد کلی سایت کمک کند.
TTFB پایینتر میتواند زمینه بهتری برای:
شروع سریعتر بارگذاری صفحه
بهبود تجربه کاربر
بهبود عملکرد صفحات
کاهش تأخیر در دریافت HTML
بهبود برخی شاخصهای عملکرد فراهم کند.
بنابراین کاهش TTFB را بهتر است بخشی از فرایند بهینهسازی سرعت سایت و سئو تکنیکال بدانیم، نه یک تکنیک مستقل برای افزایش رتبه.
اشتباهات رایج هنگام رفع TTFB :
1) نصب چند افزونه کش :
استفاده همزمان از چند سیستم کش میتواند باعث تداخل و مشکلات غیرقابل پیشبینی شود.
2) افزایش منابع بدون پیدا کردن علت :
ارتقای هاست گاهی مشکل را موقتاً بهتر میکند، اما اگر افزونه یا کوئری مشکلدار باقی بماند، مشکل دوباره ایجاد خواهد شد.
3) پاکسازی بیدلیل دیتابیس :
حذف اطلاعات دیتابیس بدون شناخت ساختار آن میتواند باعث خرابی سایت شود.
4) تمرکز فقط روی تصاویر :
تصاویر بیشتر روی حجم صفحه و زمان دریافت منابع اثر دارند؛ در حالی که TTFB بالا معمولاً قبل از دریافت محتوای کامل صفحه اتفاق میافتد.
5) تست فقط یک بار :
TTFB یک مقدار کاملاً ثابت نیست. بهتر است چند بار و در شرایط مختلف تست انجام شود.
جمعبندی؛ بهترین راه رفع مشکلات TTFB چیست؟
رفع مشکلات TTFB با یک تنظیم ساده یا نصب یک افزونه انجام نمیشود. ابتدا باید مشخص شود تأخیر در کدام بخش ایجاد شده است.
اگر مشکل از هاست باشد، باید منابع و کیفیت سرور بررسی شود. اگر مشکل از وردپرس باشد، افزونهها، قالب و کدهای اختصاصی باید بررسی شوند. اگر دیتابیس عامل کندی باشد، کوئریها و ساختار جداول باید بهینه شوند. در صورت وجود پردازشهای تکراری نیز استفاده صحیح از Page Cache و Object Cache میتواند کمککننده باشد.
برای سایتهای وردپرسی، بهترین رویکرد این است که ابتدا TTFB را در صفحات مختلف اندازهگیری کنید، سپس نسخه کششده و بدون کش را مقایسه کرده و بعد سراغ سرور، PHP، دیتابیس، افزونهها و درخواستهای خارجی بروید.
در نهایت، هدف فقط رسیدن به یک عدد خاص نیست. هدف اصلی این است که سرور بتواند درخواست کاربران را سریع، پایدار و بدون ایجاد صف یا پردازشهای غیرضروری پاسخ دهد. با همین رویکرد، علاوه بر کاهش TTFB، زمینه برای بهبود سرعت کلی سایت، تجربه کاربری و عملکرد صفحات نیز فراهم خواهد شد.