WordPress Hosting

TTFB nedir? Sunucu yanıt süresini etkileyen etkenler

TTFB'yi oluşturan adımlar (DNS, bağlantı, TLS, sunucu işleme), LCP ile ilişkisi, önbellek, PHP, veritabanı, lokasyon ve CDN'in etkisi; tarayıcı geliştirici araçları ve curl ile kendi ölçümünüzü doğru yapmanın yöntemi.

TTFB (Time to First Byte), tarayıcının bir sayfayı istemesinden sunucudan gelen ilk baytı almasına kadar geçen süredir. Sayfanın tamamının yüklenme süresi değil, sunucunun “cevap vermeye başlama” süresidir. Yavaş bir siteyi incelemeye bu değerden başlamak mantıklıdır, çünkü ilk bayt gelmeden tarayıcı hiçbir şey çizemez. Bu yazı TTFB'yi oluşturan adımları, Core Web Vitals metriklerinden LCP ile ilişkisini, değeri büyüten etkenleri ve kendi sitenizde nasıl ölçeceğinizi anlatır. Amaç bir firma puanı vermek değil, ölçüm yöntemini elinize vermektir.

İlk bayta kadar neler olur

Adres çubuğuna yazıp Enter'a bastığınızda ilk bayt gelene dek şu adımlar sırayla tamamlanır:

  1. DNS çözümleme: Alan adı IP adresine çevrilir. Önbellekte varsa sıfıra yakın, yoksa onlarca milisaniye sürer.
  2. TCP bağlantısı: Tarayıcı sunucuyla el sıkışır. Süre, ziyaretçi ile sunucu arasındaki mesafeye bağlı gidiş-dönüş gecikmesiyle (RTT) belirlenir.
  3. TLS el sıkışması: https için şifreleme anahtarları değiş tokuş edilir; bir ya da iki ek gidiş-dönüş gerektirir. HTTP/3 ve TLS 1.3 bu adımı kısaltır.
  4. İsteğin gönderilmesi: Tarayıcı HTTP isteğini yollar.
  5. Sunucu işleme: Web sunucusu isteği alır, önbellekte hazır sayfa varsa hemen döner; yoksa PHP çalışır, veritabanı sorgulanır, sayfa üretilir. Dinamik sitelerde en büyük pay genellikle buradadır.
  6. İlk baytın yolculuğu: Üretilen yanıtın başı ağ üzerinden tarayıcıya ulaşır.

İlk dört adım ağ ve mesafeyle, beşinci adım sunucu ve uygulamayla ilgilidir. İyileştirme yaparken önce hangi tarafın büyük olduğunu bulmak gerekir; tarayıcı araçları bu ayrımı gösterir.

LCP ile ilişkisi

Google'ın Core Web Vitals metriklerinden LCP (Largest Contentful Paint), sayfadaki en büyük görünür öğenin çizilme süresidir ve 2,5 saniyenin altı iyi sayılır. TTFB, LCP'nin içinde yer alan ilk dilimdir: ilk bayt bir saniyede geliyorsa LCP için geriye yalnızca 1,5 saniye kalır ve bu sürede HTML ayrıştırılacak, stil dosyaları inecek, görsel yüklenecektir. Google'ın yayımladığı eşiklere göre 800 milisaniyenin altındaki ilk bayt süresi iyi, 1800 milisaniyenin üzeri zayıf kabul edilir. Pratikte dinamik bir WordPress sayfasının bu eşiklerin hangi tarafında kalacağını çoğu zaman tam sayfa önbelleğinin açık olup olmaması belirler.

Değeri büyüten etkenler

EtkenNerede etkiliNe yapılabilir
Sayfa önbelleği yokSunucu işlemeLSCache, WP Rocket gibi tam sayfa önbelleği; her istekte PHP çalışmasın
OPcache kapalıSunucu işlemePHP betiklerinin derlenmiş hâlini bellekte tutar; panelden ya da php.ini'den açılır
Yavaş veritabanı sorgularıSunucu işlemeEklenti sayısını azaltma, nesne önbelleği (Redis, Memcached), indeks eksiklerini giderme
Ağır eklenti ve temaSunucu işlemeQuery Monitor gibi araçlarla en yavaş eklentiyi bulup kaldırma
Harici API çağrılarıSunucu işlemeSayfa üretimi sırasında dış servise bağlanan kodu asenkron ya da önbellekli yapma
Aşırı yüklü paylaşımlı sunucuSunucu işlemeKaynak sınırı uyarılarını izleme; gerekirse üst paket ya da VPS
Uzak lokasyonAğZiyaretçi kitlesine yakın veri merkezi; Türkiye hedefli sitede Türkiye ya da yakın Avrupa
Eski protokollerAğHTTP/2 ya da HTTP/3 ve TLS 1.3 desteği olan sunucu
Çok sayıda yönlendirmeAğhttp→https→www zinciri tek adıma indirilir; her yönlendirme yeni bir gidiş-dönüştür
DNS yavaşlığıAğHızlı DNS sağlayıcısı, makul TTL

Önbellek neden en büyük kazancı sağlar

Dinamik bir sitede her istekte PHP başlar, veritabanına onlarca sorgu gider ve HTML sıfırdan üretilir. Tam sayfa önbelleği bu üretimin sonucunu saklar ve sonraki ziyaretçilere diskten ya da bellekten verir; sunucu işleme adımı milisaniyelere iner. LiteSpeed tabanlı paketlerde LSCache eklentisi bu işi sunucu seviyesinde yapar; Apache ve Nginx'te eklenti ya da sunucu önbelleği kullanılır. Giriş yapmış kullanıcılar, sepet sayfaları ve kişiselleştirilmiş içerik önbellekten çıkarıldığından mağaza sitelerinde kazanç ziyaretçi profiline göre değişir.

PHP ve veritabanı

PHP sürümü yükseltmek tek başına belirgin fark yaratabilir; yeni sürümler aynı kodu genellikle daha hızlı çalıştırır. OPcache'e ayrılan bellek (opcache.memory_consumption) küçükse derlenmiş betikler sığmaz ve önbellek sık sık yeniden doldurulur. Veritabanı tarafında ise her sayfada okunan otomatik yüklenen (autoload) satırlar ile tabloyu şişiren süresi dolmuş geçici veriler (transient) büyüyen wp_options tablosunu yavaşlatır; düzenli temizlik ve bir nesne önbelleği, önbelleğe girmeyen sayfalarda bile süreyi kısaltır.

Lokasyon ve CDN

Ziyaretçi ile sunucu arasındaki fiziksel mesafe her gidiş-dönüşe gecikme ekler; TCP ve TLS 1.3 üzerinden kurulan yeni bir bağlantıda DNS hariç ilk bayt gelene kadar genellikle üç gidiş-dönüş yapılır (HTTP/3'te bir eksik). Bu nedenle ziyaretçisi Türkiye'de olan bir site için Türkiye ya da yakın Avrupa lokasyonu, okyanus ötesi bir veri merkezinden daha düşük yanıt süresi verir; sunucu ne kadar güçlü olursa olsun mesafe ortadan kalkmaz. CDN, görsel, stil ve betik gibi statik dosyaları ziyaretçiye yakın noktalardan sunar; HTML'in kendisini de uç noktada önbelleğe alan CDN'ler sayfa önbelleğiyle birleştiğinde ilk bayt süresini mesafeden büyük ölçüde bağımsız hâle getirir. HTML önbelleklenmiyorsa CDN asıl olarak sonraki dosyaları hızlandırır, ilk bayta etkisi sınırlı kalır.

Kendi ölçümünüzü nasıl yaparsınız

Üçüncü taraf hız testleri işe yarar, ama ayrıntıyı en doğrudan gösteren araç kendi tarayıcınızdır:

  1. Chrome ya da Firefox'ta sayfayı açın, F12 ile geliştirici araçlarını açın ve Network (Ağ) sekmesine geçin.
  2. “Disable cache” kutusunu işaretleyin ve sayfayı yenileyin.
  3. Listedeki ilk satıra (HTML belgesi) tıklayın, Timing (Zamanlama) sekmesini açın.
  4. “Waiting for server response” ya da “Waiting (TTFB)” satırındaki değer büyük ölçüde sunucu işleme süresidir (bir gidiş-dönüş de içinde); üstündeki DNS, bağlantı ve SSL/TLS satırları ağ tarafını gösterir.
  5. Aynı sayfayı en az beş kez, farklı saatlerde yenileyin ve ortanca değeri alın; tek bir ölçüm sunucu ya da ağdaki anlık dalgalanmayı yansıtabilir.

Komut satırından ölçmek için curl yeterlidir:

`` curl -o /dev/null -s -w "DNS %{time_namelookup}s Baglanti %{time_connect}s TLS %{time_appconnect}s Ilk bayt %{time_starttransfer}s\n" https://ornek.com/ ``

Değerler kümülatiftir; sunucu işleme payı kabaca time_starttransfer eksi time_appconnect'tir. Bu komutu bir VPS'ten ya da farklı şehirdeki bir bilgisayardan çalıştırmak lokasyonun etkisini doğrudan gösterir.

Yorumlarken dikkat edilecekler

  • Önbellekli ve önbelleksiz sayfayı ayrı ölçün; giriş yapmış durumda ya da sorgu parametresi ekleyerek önbelleği atlayabilirsiniz. İkisi arasındaki fark, önbelleğin sitenizde ne kadar iş yaptığını söyler.
  • Ana sayfa ile bir ürün ya da yazı sayfasını ayrı ayrı inceleyin; ağır sorgular genellikle iç sayfalardadır.
  • Ölçümü kendi internet bağlantınızın yavaş olduğu bir anda yapmak sunucuyu suçlu gösterebilir; ağ satırlarına bakarak ayırt edin.
  • Yeni bir pakete taşınmadan önce ve sonra aynı yöntemle ölçerek taşınmanın gerçek etkisini görün; firma vaatleri yerine kendi sayılarınızı esas alın.

Ölçüm sonuçlarını not ederken tarih, saat, ölçüm yapılan lokasyon ve sayfanın önbellekli olup olmadığını birlikte yazın. Birkaç hafta sonra aynı koşullarda tekrarlanan ölçüm, sunucudaki yavaşlamayı ya da bir eklenti güncellemesinin etkisini tahmin yerine sayıyla gösterir.

Paket seçimine etkisi

Düşük yanıt süresi için paket sayfasında aranacak somut özellikler şunlardır: sunucu seviyesinde önbellek (LiteSpeed ve LSCache ya da Nginx önbelleği), güncel PHP sürümleri ve OPcache, Redis ya da Memcached desteği, NVMe disk, HTTP/3 ve ziyaretçi kitlesine yakın lokasyon. Bu özelliklerin paket açıklamalarında yer alıp almadığını WordPress hosting ve paylaşımlı hosting kategorilerinde karşılaştırabilirsiniz; web sunucusu farkları için LiteSpeed, Apache ve Nginx yazısına bakın. Sunucu kaynaklarının size ayrıldığı bir ortam istiyorsanız VPS sunucu seçeneklerine bakabilirsiniz; ancak paylaşımlı paketteki bir sitede önbellek ve eklenti temizliği, paket değiştirmeden önce denenecek ilk adımdır.

İlgili yazılar

WooCommerce için hosting seçimi: kaynak, önbellek ve ödeme güvenliği

Bir WooCommerce mağazası için paket seçerken eş zamanlı işlem kapasitesi, PHP işçisi, nesne önbelleği, SSL ve PCI kapsamı, ödeme altyapısıyla uyum ve yedek sıklığına nasıl bakılacağını, VPS'e ne zaman geçileceğini anlatıyoruz.

Ücretsiz site taşıma sunan hosting firmaları

Ücretsiz site taşıma beyan eden 16 sağlayıcıyı, taşımanın kaç siteyi ve hangi bileşenleri (dosya, veritabanı, e-posta, DNS) kapsadığına dair paket notlarını ve sipariş öncesi sorulması gereken kapsam sorularını listeledik.