TTFB Düşürme Nedir ve Neden Önemlidir?
İlk Bayta Kadar Geçen Süre (Time to First Byte) veya TTFB, sunucu performansının en önemli ölçütlerinden biridir. TTFB, tarayıcının istek göndermesinden sunucudan ilk bayt yanıtının alınmasına kadar geçen süreyi ölçer. Bu sayı ne kadar düşükse, kullanıcılar sitenizin içeriğini o kadar hızlı görür. TTFB’yi düşürmek, kullanıcı deneyimi ve arama motoru sıralamaları üzerinde doğrudan bir etkiye sahiptir.
Yüksek TTFB genellikle üç ana faktörden kaynaklanır: yanlış sunucu yapılandırması, yavaş veritabanı veya önbellek kullanılmaması. Bu makalede, bu faktörlerin her birini inceleyecek ve bunları çözmek için pratik çözümler sunacağız.
TTFB’yi Doğru Ölçme
Herhangi bir işlem yapmadan önce TTFB’yi doğru bir şekilde ölçmelisiniz. Bunun için çeşitli araçlar mevcuttur:
- Çevrimiçi Araçlar: GTmetrix, Pingdom Tools ve WebPageTest
- Komut Satırı Aracı: Linux’ta
curlkomutu - Tarayıcı Araçları: Chrome DevTools (Network bölümü)
curl ile doğru ölçüm için aşağıdaki komutu kullanın:
curl -o /dev/null -s -w "time_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{total}\n" https://example.com
Bu komutun çıktısı, yanıt süresinin farklı bölümlerini içerir. time_starttransfer değeri sizin TTFB’nizdir. Normal siteler için iyi bir TTFB 200 milisaniyenin altı, ağır siteler için ise 500 milisaniyenin altıdır.
Yaygın Hata: Yanlış Yerden Ölçüm
Birçok kişi TTFB’yi yalnızca tek bir coğrafi konumdan ölçer. Sunucunuz İran’daysa ve kullanıcılarınız yurt dışından sitenize erişiyorsa, onların TTFB’si çok daha yüksek olacaktır. Her zaman birden fazla konumdan test edin.
TTFB’yi Düşürmek İçin PHP Optimizasyonu
PHP, en yaygın sunucu tarafı programlama dillerinden biridir ve yanlış yapılandırma TTFB’yi önemli ölçüde artırabilir.
PHP-FPM Ayarları
PHP-FPM kullanıyorsanız, php-fpm.conf veya www.conf dosyasındaki aşağıdaki ayarları kontrol edin:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
Yukarıdaki değerleri sunucu kaynaklarınıza göre ayarlayın. pm.max_children çok düşükse, istekler kuyrukta bekler ve TTFB artar. Uygun değeri hesaplamak için:
- PHP için mevcut RAM miktarını belirleyin (örneğin 2 GB)
ps aux | grep phpkomutuyla her bir PHP işleminin ortalama RAM kullanımını bulun (genellikle 30-50 MB)- İzin verilen sayı = Mevcut RAM / İşlem başına kullanım
OPcache’i Etkinleştirin
OPcache, derlenmiş PHP kodunu bellekte saklar ve her istekte yeniden derlemeyi önler. Etkinleştirmek için php.ini dosyasına aşağıdaki satırları ekleyin:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
Değişiklikleri uyguladıktan sonra PHP-FPM hizmetini yeniden başlatın:
sudo systemctl restart php8.1-fpm
TTFB’yi Düşürmek İçin Veritabanı Optimizasyonu
Yavaş bir veritabanı, yüksek TTFB’nin ana nedenlerinden biridir. Siteniz MySQL veya MariaDB kullanıyorsa aşağıdaki adımları izleyin.
Yavaş Sorguları Belirleme
Hangi sorguların uzun sürdüğünü görmek için yavaş sorgu günlüğünü etkinleştirin:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-queries.log';
Ardından günlük dosyasını inceleyin:
sudo tail -f /var/log/mysql/slow-queries.log
Doğru İndeksleme
Büyük tablolar için indeksleme gereklidir. Örnek: 500.000 kayıtlı bir orders tablonuz olduğunu ve sık sık user_id’ye göre arama yaptığınızı varsayalım:
CREATE INDEX idx_user_id ON orders(user_id);
Mevcut indeksleri kontrol etmek için aşağıdaki komutu kullanın:
SHOW INDEX FROM orders;
MySQL Ayarları
my.cnf dosyasını düzenleyin. 4 GB RAM’e sahip bir sunucu için aşağıdaki ayarlar uygundur:
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
query_cache_type = 1
query_cache_size = 128M
max_connections = 150
Önemli Not: innodb_buffer_pool_size toplam RAM’in yaklaşık %50-70’i olmalıdır. Çok düşükse, veritabanı sürekli diskten okumak zorunda kalır ve bu da TTFB’yi artırır.
TTFB’yi Düşürmek İçin Önbellekleme
Önbellekleme, TTFB’yi düşürmenin en etkili yöntemlerinden biridir. Önbellekleme ile hazır yanıtları saklar ve yeniden işlemeyi önlersiniz.
Tarayıcı Önbelleği
HTTP başlıklarını ayarlayarak tarayıcıyı statik dosyaları önbelleğe almaya zorlayabilirsiniz. .htaccess dosyasında (Apache için) veya Nginx ayarlarında:
# Apache
<FilesMatch "\.(css|js|jpg|png|gif)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Nginx
location ~* \.(css|js|jpg|png|gif)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
Redis veya Memcached ile Sunucu Tarafı Önbelleği
Dinamik siteler için nesne önbelleği kullanmak oldukça etkilidir. WordPress, Redis Object Cache gibi eklentilerle bu özelliği kolayca kullanır. Redis kurulumu:
sudo apt install redis-server php8.1-redis
sudo systemctl enable redis
sudo systemctl start redis
Ardından WordPress ayarlarında Redis Object Cache eklentisini etkinleştirin. Bu, TTFB’yi %50’ye kadar düşürebilir.
Tam Sayfa Önbelleği (Full Page Cache)
WordPress siteleri için WP Rocket veya W3 Total Cache gibi eklentiler tam sayfa önbelleği sunar. Bu eklentiler, hazır HTML sürümlerini saklar ve PHP veya veritabanına ihtiyaç duymadan kullanıcılara sunar.
DNS ve Ağ Optimizasyonu
TTFB yalnızca web sunucusuyla sınırlı değildir. DNS süresi de TTFB’nin bir parçasıdır.
Hızlı DNS Kullanımı
Cloudflare DNS (1.1.1.1) veya Google DNS (8.8.8.8) gibi hızlı DNS hizmetlerini kullanın. ServerNet’in kendi DNS hizmetini kullanıyorsanız, A ve CNAME kayıtlarının doğru ayarlandığından emin olun.
HTTP/2 veya HTTP/3’ü Etkinleştirme
HTTP/2 ve HTTP/3, bağlantı sayısını azaltarak ve istekleri çoğullayarak TTFB’yi iyileştirir. Nginx’te etkinleştirmek için:
server {
listen 443 ssl http2;
# SSL ayarları
}
TTFB Düşürmede Yaygın Hatalar
İşte kaçınmanız gereken birkaç yaygın hata:
- Yalnızca Bir Faktöre Odaklanmak: TTFB’yi düşürmek kapsamlı bir yaklaşım gerektirir. Yalnızca önbelleği etkinleştirir ancak veritabanı yavaşsa, istenen sonucu alamazsınız.
- Aşırı Önbellek Kullanımı: Her şeyi önbelleğe almak, kullanıcıların eski içerik görmesine neden olabilir. Uygun bir son kullanma süresi ayarlayın.
- CDN’yi Göz Ardı Etmek: Kullanıcılarınız farklı bölgelerdeyse, CDN kullanmak TTFB’yi önemli ölçüde azaltabilir. ServerNet, İranlı kullanıcılar için oldukça faydalı olan yerel düğümlerle CDN hizmetleri sunar.
- Sürekli İzleme Yapmamak: TTFB, trafik artışı veya site değişiklikleriyle değişebilir. Periyodik olarak ölçüm yapın.
Özet
TTFB’yi düşürmek, PHP, veritabanı, önbellek ve ağa dikkat edilmesini gerektiren çok katmanlı bir süreçtir. Bu makalede sunulan çözümleri uygulayarak sitenizin TTFB’sini 200 milisaniyenin altına düşürebilir ve daha iyi bir kullanıcı deneyimi sağlayabilirsiniz. Unutmayın, TTFB’deki her milisaniyelik azalma, dönüşüm oranlarını artırabilir ve sitenizin arama sonuçlarındaki sıralamasını iyileştirebilir.
Başlamak için önce mevcut TTFB’nizi ölçün, ardından sorunlu bölümlerden birini seçin ve ilgili çözümleri uygulayın. Her değişiklikten sonra etkisini görmek için tekrar ölçüm yapın.
Yorumlar 0
Henüz yorum yok — ilk siz olun!