وقتی از سرعت سایت حرف میزنیم، معمولاً به "زمان لود کامل صفحه" فکر میکنیم. ولی یه معیار مهمتر هست که خیلیا ازش غافلن: TTFB یا Time To First Byte.
این عدد کوچیک میتونه خیلی چیزا در مورد سلامت سرور، کیفیت کد و بهینه بودن دیتابیس شما بگه. بیاید با هم ببینیم TTFB چیه، چرا مهمه و مهمتر از همه، چطور میتونید اون رو بهینه کنید.
TTFB یعنی چی؟
TTFB مخفف Time To First Byte هست. یعنی زمانی که طول میکشه از لحظهای که مرورگر درخواست میفرسته تا لحظهای که اولین بایت پاسخ از سرور رو دریافت میکنه.
فرض کنید رستوران رفتید و غذا سفارش میدید. TTFB مثل زمانی هست که طول میکشه تا گارسون بگه "بله، سفارشتون ثبت شد". نه زمان آوردن غذا، فقط اون تایید اولیه! هر چقدر این زمان کمتر باشه، کاربر احساس میکنه سایت سریعتره.
TTFB شامل چه چیزایی میشه؟
TTFB از سه بخش اصلی تشکیل شده:
- DNS Lookup: زمانی که طول میکشه تا IP سرور از روی دامنه پیدا بشه. DNS باید سوال کنه "کدوم IP دارید؟" و جواب بگیره.
- TCP Connection: زمان برقراری اتصال با سرور (TCP Handshake). برای HTTPS، این شامل TLS Handshake هم میشه که کمی بیشتر طول میکشه.
- Server Processing Time: زمانی که سرور صرف پردازش درخواست میکنه - اجرای PHP، Query دیتابیس، ساختن HTML.
معمولاً بخش سوم (Server Processing) بیشترین زمان رو میگیره و بیشترین پتانسیل بهبود رو هم داره.
TTFB خوب چنده؟
گوگل در راهنمای Core Web Vitals این معیارها رو پیشنهاد میکنه:
- خوب: کمتر از ۸۰۰ms (ایدهآل: زیر ۲۰۰ms)
- نیاز به بهبود: ۸۰۰ms تا ۱۸۰۰ms
- ضعیف: بیشتر از ۱۸۰۰ms
البته این اعداد برای کل TTFB شامل شبکه هست. برای Server Processing Time محض، هدف باید زیر ۲۰۰ms باشه. اگه Server Processing Time شما بالای ۵۰۰ms هست، یه مشکل جدی دارید.
چرا TTFB مهمه؟
۱. تاثیر مستقیم روی سئو
گوگل Core Web Vitals رو به عنوان فاکتور رتبهبندی در نظر میگیره. TTFB مستقیماً روی LCP (Largest Contentful Paint) تاثیر میذاره. یه TTFB بالا یعنی LCP بدتر یعنی امتیاز PageSpeed پایینتر یعنی رتبه ضعیفتر.
۲. تجربه کاربری
کاربرا صبور نیستن! تحقیقات نشون داده که هر ۱۰۰ms تاخیر، نرخ تبدیل رو کاهش میده. اگه سایت دیر جواب بده، کاربر میره سراغ رقیب.
۳. نشانه سلامت سرور
TTFB بالا معمولاً نشونه یه مشکل عمیقتره: سرور ضعیف، کد نامناسب، Query های سنگین، یا دیتابیس کند. TTFB رو مثل یه علامت حیاتی سایت در نظر بگیرید.
۴. شاخص عملکرد سرور
TTFB معیار خوبی برای مقایسه هاستهای مختلفه. اگه میخواید بدونید کدوم هاست سریعتره، TTFB اونها رو با هم مقایسه کنید.
چطور TTFB رو اندازه بگیریم؟
چند روش ساده و مطمئن:
۱. Chrome DevTools
- F12 یا Ctrl+Shift+I بزنید
- برید به تب Network
- صفحه رو با Ctrl+Shift+R (Hard Refresh) رفرش کنید
- روی اولین فایل HTML کلیک کنید
- توی تب Timing، مقدار Waiting (TTFB) رو ببینید
۲. Google PageSpeed Insights
Google PageSpeed Insights به طور مستقیم TTFB رو نشون میده. آدرس سایت رو وارد کنید و توی بخش Lab Data، Time to First Byte رو ببینید.
۳. ابزارهای تخصصی
- GTmetrix: جزئیات کامل TTFB و breakdown دقیق
- WebPageTest: تست از لوکیشنهای مختلف دنیا
- KeyCDN TTFB Test: تست خیلی ساده و سریع
- Pingdom Tools: مانیتورینگ مستمر
توصیه: TTFB رو از چند لوکیشن مختلف تست کنید. شاید از ایران خوب باشه ولی از اروپا کند. این به لوکیشن سرور و CDN بستگی داره.
عوامل اصلی کندی TTFB چیستند؟
قبل از بهینهسازی، باید علت رو پیدا کنید:
- هاست ضعیف: سرورهای اشتراکی شلوغ بزرگترین دلیلن
- PHP بدون OPcache: PHP باید هر بار کد رو Parse کنه
- Query های کند دیتابیس: Query های بدون Index، JOIN های سنگین
- افزونههای زیاد: هر افزونه کد اضافه اجرا میکنه
- تم سنگین: بعضی تمها Query های زیادی میزنن
- لوکیشن سرور: فاصله فیزیکی اهمیت داره
- بدون Object Cache: همه Query ها به دیتابیس میرن
چطور TTFB رو کم کنیم؟
۱. هاست بهتر بگیرید
سادهترین و موثرترین راه! اگه روی هاست اشتراکی شلوغ هستید، سرور CPU و RAM مشترکه. VPS یا هاست cloud به شما منابع اختصاصی میده. فرق TTFB بین هاست اشتراکی و VPS معمولاً چند صد میلیثانیهست.
۲. OPcache رو فعال کنید
OPcache (یا OpCache) یه extension PHP هست که کد PHP رو کامپایلشده توی حافظه نگه میداره. بدون OPcache، PHP باید هر بار فایلها رو از صفر parse کنه. با OPcache این کار یه بار انجام میشه.
روی اکثر هاستهای مدرن OPcache پیشفرض فعاله. توی phpinfo چک کنید.
۳. Object Cache (Redis) فعال کنید
با Object Cache، Query های تکراری از RAM جواب میگیرن نه دیتابیس. این میتونه Server Processing Time رو از چند صد میلیثانیه به چند ده میلیثانیه برسونه.
۴. دیتابیس رو بهینه کنید
Query های سنگین، جداول شلوغ، و ایندکسهای نامناسب باعث کندی میشن. این کارها رو انجام بدید:
- Transients و Log های قدیمی رو پاک کنید
- جداول دیتابیس رو Optimize کنید
- Slow Query Log رو فعال کنید و Query های کند رو شناسایی کنید
- ایندکسهای مناسب اضافه کنید
۵. PHP رو آپدیت کنید
PHP 8.x خیلی سریعتر از PHP 7.x هست. آپدیت PHP سادهترین کاریه که میتونید انجام بدید و نتیجه فوری داره. البته قبلاً مطمئن بشید سایت و افزونهها با نسخه جدید سازگارن.
۶. CDN استفاده کنید
CDN (Content Delivery Network) درخواستها رو از نزدیکترین PoP (Point of Presence) جواب میده. حتی اگه سرور اصلی در آمریکاست، CDN میتونه TTFB رو برای کاربر ایرانی کاهش بده. Cloudflare رایگانه و خیلی موثره.
۷. افزونههای غیرضروری رو حذف کنید
هر افزونه وردپرس کدی اضافه میکنه که باید اجرا بشه. یه افزونه ساده میتونه ۱۰-۵۰ms به TTFB اضافه کنه. ۳۰ تا افزونه یعنی تا ۱.۵ ثانیه! افزونههایی که واقعاً استفاده نمیکنید رو حذف کنید (نه فقط غیرفعال).
۸. از LiteSpeed یا Nginx به جای Apache استفاده کنید
LiteSpeed و Nginx خیلی کارآمدتر از Apache هستن. اگه هاستتون Apache داره، بررسی کنید که آیا میتونید به LiteSpeed مهاجرت کنید.
یک مثال عملی: از ۸۰۰ms به ۱۵۰ms
یه سایت وردپرسی با TTFB حدود ۸۰۰ms رو بهینه کردیم:
قبل از بهینهسازی: TTFB ≈ ۸۰۰ms
- هاست اشتراکی با PHP 7.4
- بدون OPcache
- بدون Object Cache
- ۲۵ افزونه نصب
بعد از بهینهسازی: TTFB ≈ ۱۵۰ms
- آپگرید به VPS
- آپدیت به PHP 8.2
- OPcache فعال
- Redis Object Cache فعال
- ۸ افزونه غیرضروری حذف شد
- دیتابیس Optimize شد
نتیجه: TTFB از ۸۰۰ms به ۱۵۰ms رسید! این به شکل مستقیم روی PageSpeed Score و رتبه گوگل تاثیر گذاشت.
TTFB و Core Web Vitals
گوگل در Core Web Vitals سه معیار داره: LCP، FID (یا INP) و CLS. TTFB بیشترین تاثیر رو روی LCP داره. LCP زمانی رو اندازه میگیره که بزرگترین المان صفحه نمایش داده میشه. اگه TTFB بالا باشه، LCP هم حتماً بالاست.
یه TTFB زیر ۲۰۰ms شرط لازم (ولی نه کافی) برای LCP خوب زیر ۲.۵ ثانیهست.
سوالات متداول
TTFB با زمان لود صفحه چه فرقی داره؟
TTFB فقط زمان پاسخ اولیه سرور رو اندازه میگیره. زمان لود کامل شامل دانلود همه فایلها (CSS، JS، تصاویر) هم میشه. TTFB کم میتونه زمان لود بالا داشته باشه اگه تصاویر سنگین یا JS زیادی داشته باشید.
TTFB من از موبایل بدتره. چرا؟
موبایل دو دلیل داره: اول اتصال موبایل کندتر از فیبر هست. دوم ممکنه مرورگر موبایل رو Throttled تست کنه. برای بهبود TTFB موبایل، از CDN استفاده کنید و مطمئن بشید HTTP/2 یا HTTP/3 فعاله.
آیا TTFB روی تمام صفحات یکسانه؟
نه، صفحاتی که Query های پیچیدهتری دارن (مثل صفحه جستجو یا صفحه دستهبندی با فیلترهای زیاد) TTFB بالاتری دارن. مهم اینه که صفحه اصلی و صفحات پرترافیک رو بهینه کنید.
آیا Cloudflare TTFB رو بهتر میکنه؟
Cloudflare DNS Lookup و اتصال اولیه رو بهتر میکنه. اما Server Processing Time رو نمیتونه تغییر بده. اگه Caching قوی داشته باشه، میتونه TTFB رو به کمتر از ۵۰ms برسونه برای صفحات کششده.
ابزارهای مانیتورینگ مستمر TTFB
یه بار اندازهگیری TTFB کافی نیست. سرورها در طول روز تغییر میکنن. باید مستمر مانیتور کنید:
- UptimeRobot: نسخه رایگان هر ۵ دقیقه چک میکنه و Response Time رو ثبت میکنه
- Pingdom: گزارشهای دقیقتر و تست از لوکیشنهای مختلف
- New Relic: برای اپلیکیشنهای پیچیده، گزارشهای عمیق از هر Transaction
- Datadog: مانیتورینگ جامع سرور و اپلیکیشن
ابزارهای مانیتورینگ هم به شما میگن TTFB در ساعات پیک چقدره. ممکنه در ساعت ۲ بامداد خوب باشه ولی وقت اوج ترافیک به مشکل بخورید.
TTFB و تست A/B
وقتی میخواید یه بهینهسازی انجام بدید (مثل فعال کردن Redis یا آپگرید هاست)، TTFB رو قبل و بعد اندازه بگیرید. این به شما میگه آیا تغییر واقعاً موثر بوده یا نه. همیشه دادهمحور تصمیم بگیرید.
سوالات متداول
TTFB با زمان لود صفحه چه فرقی داره؟
TTFB فقط زمان پاسخ اولیه سرور رو اندازه میگیره. زمان لود کامل شامل دانلود همه فایلها (CSS، JS، تصاویر) هم میشه. TTFB کم میتونه زمان لود بالا داشته باشه اگه تصاویر سنگین یا JS زیادی داشته باشید.
TTFB من از موبایل بدتره. چرا؟
موبایل دو دلیل داره: اول اتصال موبایل کندتر از فیبر هست. دوم ممکنه مرورگر موبایل رو Throttled تست کنه. برای بهبود TTFB موبایل، از CDN استفاده کنید و مطمئن بشید HTTP/2 یا HTTP/3 فعاله.
آیا TTFB روی تمام صفحات یکسانه؟
نه، صفحاتی که Query های پیچیدهتری دارن (مثل صفحه جستجو یا صفحه دستهبندی با فیلترهای زیاد) TTFB بالاتری دارن. مهم اینه که صفحه اصلی و صفحات پرترافیک رو بهینه کنید.
آیا Cloudflare TTFB رو بهتر میکنه؟
Cloudflare DNS Lookup و اتصال اولیه رو بهتر میکنه. اما Server Processing Time رو نمیتونه تغییر بده. اگه Caching قوی داشته باشه، میتونه TTFB رو به کمتر از ۵۰ms برسونه برای صفحات کششده.
عدد خوب TTFB برای سایت ایرانی چقدره؟
اگه سرور در ایران هست، باید TTFB زیر ۲۰۰ms باشه. اگه سرور خارج هست، بدون CDN ممکنه ۳۰۰-۵۰۰ms باشه که قابل قبوله. با CDN ایرانی میشه آن رو به زیر ۱۵۰ms رساند.
جمعبندی
TTFB یه معیار حیاتی هست که نشون میده سرور شما چقدر سریع جواب میده. هدفتون باید Server Processing Time زیر ۲۰۰ms باشه.
اگه TTFB بالایی دارید، مرحلهبهمرحله بهینهسازی کنید: اول هاست رو ارزیابی کنید، بعد PHP و OPcache، سپس Object Cache، بعد دیتابیس، و در آخر کد و افزونهها. هر مرحله رو قبل و بعد اندازه بگیرید.
یادتون باشه: TTFB خوب تضمینکننده سایت سریع نیست، ولی TTFB بد تضمینکننده سایت کند هست! این عدد رو جدی بگیرید، منظم مانیتورش کنید، و با دادهها تصمیم بگیرید.