TTFB (زمان تا اولین بایت) مدتی است که از فرستادن درخواست تا رسیدن اولین تکهی جواب سرور طول میکشد. تا این زمان نگذرد، مرورگر هیچ کاری نمیتواند بکند؛ برای همین پایهی همهی معیارهای دیگر سرعت است. در سایت وردپرسی بدون کش، بیشتر این زمان صرف اجرای PHP و کوئریهای دیتابیس میشود و معمولاً ۵۰۰ میلیثانیه تا چند ثانیه است. با کش صفحه، همان سایت زیر ۱۰۰ میلیثانیه جواب میدهد. پس اولین راه کم کردن TTFB کش است، نه هاست گرانتر.
از چه چیزی ساخته میشود؟
| بخش | چه چیزی | چه کسی کنترلش میکند |
|---|---|---|
| DNS | تبدیل نام دامنه به آیپی | سرویس DNS |
| اتصال و TLS | برقراری ارتباط امن | فاصلهی کاربر تا سرور؛ تنظیم سرور |
| ریدایرکتها | هر پرش یک رفت و برگشت کامل | شما |
| پردازش سرور | اجرای PHP، کوئری دیتابیس، ساخت HTML | سایت شما و منابع هاست |
| برگشت پاسخ | مسیر شبکه | فاصله |
در سایتهای وردپرسی، بخش «پردازش سرور» تقریباً همیشه بزرگترین است.
عدد خوب
| TTFB | وضعیت |
|---|---|
| زیر ۲۰۰ میلیثانیه | عالی؛ معمولاً یعنی صفحه از کش آمده |
| ۲۰۰ تا ۶۰۰ | خوب |
| ۶۰۰ تا ۱۰۰۰ | قابل بهبود |
| بیش از ۱ ثانیه | مشکل؛ باید بررسی شود |
این عددها برای تست از نزدیکی سرور است. اگر سایت روی هاست ایران است و از ابزاری در آمریکا تست میکنید، چند صد میلیثانیه فقط فاصله است. (تست درست سرعت)
چطور اندازه بگیرم؟
- مرورگر: F12، زبانهی Network، صفحه را تازه کنید، روی اولین ردیف بزنید و در Timing مقدار Waiting for server response را ببینید.
- PageSpeed: ردیف «Reduce initial server response time».
- دو بار پشتسرهم تست کنید. اگر بار دوم خیلی سریعتر است، کش دارید و بار اول کش خالی بوده.
- در پنجرهی ناشناس تست کنید. برای مدیرِ واردشده صفحه کش نمیشود.
چرا TTFB بالاست؟
| علت | نشانه | راه |
|---|---|---|
| کش صفحه ندارید | همهی صفحهها یکنواخت کندند | افزونهی کش (LiteSpeed Cache) |
| کش هست ولی کار نمیکند | هدر کش همیشه miss است | کوکی یا افزونهای که کش را میشکند |
| افزونههای زیاد یا سنگین | پیشخوان هم کند است | حذف و جایگزینی (مصرف CPU) |
| دیتابیس سنگین | صفحههای جستجو و آرشیو کندترند | پاکسازی دیتابیس |
| فراخوانی سرویس بیرونی هنگام ساخت صفحه | TTFB گاهی چند ثانیه میشود | افزونهای که لایسنس، نرخ ارز یا API را در هر بازدید چک میکند |
| نسخهی قدیمی PHP | — | نسخهی تازه (تغییر نسخه PHP) |
| رسیدن به سقف منابع | فقط در ساعت شلوغ | Resource Usage |
| زنجیرهی ریدایرکت | چند پرش قبل از صفحه | لینک مستقیم به آدرس نهایی |
| فاصلهی سرور از مخاطب | برای کاربر دور کند، برای نزدیک سریع | هاست نزدیک به مخاطب |
کش، بزرگترین اهرم
| لایه | چه چیزی را نگه میدارد | اثر بر TTFB |
|---|---|---|
| کش صفحه | HTML کامل صفحه | خیلی زیاد؛ PHP اصلاً اجرا نمیشود |
| OPcache | کد PHP کامپایلشده | متوسط؛ برای صفحههای کشنشده |
| کش آبجکت (Redis) | نتیجهی کوئریها | متوسط تا زیاد؛ برای پیشخوان، سبد خرید و کاربر واردشده |
| کش مرورگر | فایلهای ثابت | روی TTFB نه؛ روی بازدید دوم بله |
روی هاست رایکت وبسرور لایتاسپید است و OPcache و Redis روی سرورها فعال است. کش صفحه را باید خودتان با افزونه روشن کنید.
صفحههایی که کش نمیشوند
سبد خرید، تسویهحساب، حساب کاربری، پیشخوان و هر صفحه برای کاربر واردشده از کش بیروناند. TTFB این صفحهها نشاندهندهی قدرت واقعی سایت و هاست است. اگر فروشگاه دارید، TTFB صفحهی سبد خرید را جدا اندازه بگیرید؛ اگر آنجا بالاست، کش صفحه کمکی نمیکند و باید سراغ افزونهها، دیتابیس، کش آبجکت و منابع بیشتر بروید. (چرا ووکامرس کند است، کی فروشگاه هاست قویتر میخواهد)
سهم هاست
هاست سه چیز را تعیین میکند: سرعت پردازنده و دیسک، وبسرور و نرمافزارهای کش، و سهم منابع شما. ولی کد سنگین روی سریعترین سرور هم کند است. ترتیب منطقی:
- کش صفحه را روشن و مطمئن شوید hit میشود.
- TTFB صفحهی کشنشده را بسنجید.
- افزونهها را سبک کنید.
- Resource Usage را ببینید. اگر به سقف میخورید، ارتقا.
(سایتم کند است؛ هاست یا سایت؟، چقدر منابع لازم دارم)
TTFB و سئو
TTFB خودش جزو Core Web Vitals نیست، ولی سقف LCP را تعیین میکند: اگر سرور یک و نیم ثانیه دیر جواب دهد، LCP زیر ۲٫۵ ثانیه تقریباً ممکن نیست. روی خزش گوگل هم اثر دارد: سرور کند یعنی صفحههای کمتری در هر بازدید خزیده میشود. (Core Web Vitals)
سوالهای رایج
CDN برای TTFB کمک میکند؟
برای فایلهای ثابت بله. برای خود صفحه فقط وقتی که CDN صفحهی HTML را هم کش کند؛ وگرنه یک واسطه به مسیر اضافه میشود. (CDN چیست)
TTFB صفحهی اول خوب است ولی صفحههای داخلی بد.
صفحهی اول بیشتر بازدید میشود و کشش گرم است. صفحههای کمبازدید هر بار از نو ساخته میشوند. عمر کش را بلندتر کنید.
بار اول کند، بار دوم سریع.
بار اول کش ساخته شده. طبیعی است، ولی اگر کش خیلی زود خالی میشود، تنظیم TTL یا پاکسازیهای خودکار را بررسی کنید.