Günümüz modern web ekosisteminde kullanıcı deneyimini artırmanın ve sayfa açılış hızlarını milisaniyeler seviyesine indirmenin en etkili yollarından biri ön yükleme (prefetching) teknolojileridir. Ancak sunucunuza haber verilmeden yapılan aşırı ön yükleme istekleri, sunucu kaynaklarının tükenmesine ve bant genişliği maliyetlerinin katlanmasına yol açabilir. İşte tam bu noktada Google tarafından geliştirilen Chrome Traffic Advice Protocol devreye girer. Bu protokol, web sitesi yöneticilerinin tarayıcılardan ve ön arama vekil sunucularından (prefetch proxy) gelen otomatik istek trafiğini kontrol etmesine, sınırlandırmasına veya tamamen engellemesine imkan tanır. Doğru bir yapılandırma ile sunucu kaynaklarınızı korurken sitenizin genel performansını ve Core Web Vitals Nedir? Site Hızı Nasıl Optimize Edilir? rehberimizde ele aldığımız metrikleri olumlu yönde etkileyebilirsiniz.
Bu kapsamlı rehberde, .well-known/traffic-advice endpoint'inin tam olarak nasıl çalıştığını, JSON şema parametrelerini, Nginx, Apache ve CDN sağlayıcıları üzerindeki yapılandırma adımlarını ve sık yapılan yapılandırma hatalarını inceleyeceğiz.
Chrome Traffic Advice Protocol Nedir ve Nasıl Çalışır?
Chrome Traffic Advice Protocol, Google Chrome ve Chromium tabanlı tarayıcıların Google Arama sonuçları veya Speculation Rules API gibi mekanizmalar üzerinden yapacağı Private Prefetch Proxy (Özel Ön Yükleme Vekil Sunucusu) isteklerini yönlendirmek için kullanılan HTTP tabanlı bir standarttır.
Google Chrome, kullanıcıların tıklama olasılığı yüksek olan bağlantıları henüz tıklamadan arka planda yüklemek ister. Ancak bu işlem hedef sunucuya ekstra trafik yükü getirir. Chrome, bir alan adına toplu prefetch isteği göndermeden önce ilgili sunucunun kök dizininde bulunan /.well-known/traffic-advice yolunu kontrol eder.
İşleyiş adımları şu şekildedir:
https://example.com/.well-known/traffic-advice adresine bir HTTP GET isteği gönderir.disallow veya fraction kurallarına göre prefetch isteklerini ya sunucunuza iletir ya da engeller.Not: Eğer sunucunuz bu dosyaya 404 Not Found yanıtı dönerse, varsayılan olarak Chrome prefetch isteklerine izin verildiğini varsayar. Bu nedenle trafiği sınırlamak veya özelleştirmek istiyorsanız dosyayı açıkça yapılandırmalısınız.
Trafik Tavsiyesi (Traffic Advice) JSON Yapısı ve Parametreler
/.well-known/traffic-advice dosyası bir JSON dizisi (array) döndürmelidir. İçerisinde farklı kullanıcı ajanlarına (user-agent) özel talimatlar barındırabilir. En güncel standartlara göre temel parametreler şunlardır:
[
{
"user_agent": "prefetch-proxy",
"disallow": false,
"fraction": 0.5
}
]
Şimdi bu alandaki kritik parametreleri detaylıca inceleyelim:
user_agent: Kuralların uygulanacağı vekil sunucu grubunu tanımlar. Günümüzde birincil değer"prefetch-proxy"olarak belirlenmiştir.disallow: Boolean (trueveyafalse) değer alır.trueyapıldığında, ilgili vekil sunucu üzerinden gelecek TÜM ön yükleme istekleri engellenir.fraction:0.0ile1.0arasında bir kayan noktalı sayı (float) değeridir. Sunucunuza yönlendirilecek prefetch trafiğinin oranını temsil eder. Örneğin0.5, gelen ön yükleme isteklerinin %50'sine izin verileceğini, kalan %50'sinin ise reddedileceğini belirtir.
Senaryolara Göre JSON Örnekleri
Senaryo 1: Ön Yükleme Trafiğini Tamamen Engellemek Sunucu kapasiteniz kısıtlıysa veya sunucu yükünü minimumda tutmak istiyorsanız:
[
{
"user_agent": "prefetch-proxy",
"disallow": true
}
]
Senaryo 2: Trafiği %30 Oranında Sınırlandırmak (Önerilen Denge Kurulumu) Yüksek trafik alan e-ticaret veya haber sitelerinde sunucu yükünü dengelerken performans kazanımlarından faydalanmak için:
[
{
"user_agent": "prefetch-proxy",
"disallow": false,
"fraction": 0.3
}
]
Sunucu Düzeyinde .well-known/traffic-advice Yapılandırması
Chrome Traffic Advice Protocol'ünün sorunsuz çalışması için iki temel koşul vardır:
Content-Type: application/trafficadvice+json (fallback olarak application/json da kabul edilir ancak resmi tür tercih edilmelidir).Cache-Control başlığı).1. Nginx Yapılandırması
Nginx sunucunuzda .well-known/traffic-advice isteğini doğrudan bellekten hızlıca döndürmek için konfigürasyon dosyanıza (örneğin /etc/nginx/sites-available/default) şu bloku ekleyebilirsiniz:
location = /.well-known/traffic-advice {
default_type application/trafficadvice+json;
add_header Cache-Control "public, max-age=86400";
return 200 '[{"user_agent": "prefetch-proxy", "disallow": false, "fraction": 0.5}]';
}
Alternatif olarak, JSON içeriğini bir dosya olarak sunmak isterseniz:
location = /.well-known/traffic-advice {
types { application/trafficadvice+json json; }
default_type application/trafficadvice+json;
add_header Cache-Control "public, max-age=86400";
alias /var/www/html/.well-known/traffic-advice.json;
}
2. Apache Web Server Yapılandırması
Apache kullanıyorsanız, .htaccess dosyanıza veya vhost yapılandırmanıza şu kuralları ekleyebilirsiniz:
<Location "/.well-known/traffic-advice">
Header set Content-Type "application/trafficadvice+json"
Header set Cache-Control "public, max-age=86400"
</Location>
# Eger dosya olarak sunuyorsaniz mod_rewrite ile yönlendirme:
RewriteEngine On
RewriteRule ^\.well-known/traffic-advice$ /path/to/traffic-advice.json [L]
3. Edge ve CDN Düzeyinde Yapılandırma (Cloudflare Workers / Edge Rules)
Trafiği kök sunucunuza (origin) hiç ulaştırmadan edge seviyesinde yanıtlamak, altyapı maliyetlerini ciddi oranda düşürür. CDN Nedir, Nasıl Çalışır? Cloudflare ile Site Hızlandırma Rehberi içeriğimizde vurguladığımız gibi edge computing performansın anahtarıdır.
Bir Cloudflare Worker betiği ile işlemi şöyle çözebilirsiniz:
addEventListener('fetch', event => {
const url = new URL(event.request.url);
if (url.pathname === '/.well-known/traffic-advice') {
event.respondWith(handleTrafficAdvice());
}
});
async function handleTrafficAdvice() {
const body = JSON.stringify([
{
"user_agent": "prefetch-proxy",
"disallow": false,
"fraction": 1.0
}
]);
return new Response(body, {
status: 200,
headers: {
'Content-Type': 'application/trafficadvice+json',
'Cache-Control': 'public, max-age=86400',
'Access-Control-Allow-Origin': '*'
}
});
}
Doğrulama, Test ve Hata Ayıklama Adımları
Yapılandırmayı tamamladıktan sonra protokolün doğru çalışıp çalışmadığını test etmek kritiktir.
cURL ile Terminalden Test Etme
Terminalinizi açın ve sunucunuza şu isteği atın:
curl -i -X GET https://yoursite.com/.well-known/traffic-advice
Beklenen çıktı örneği:
HTTP/2 200
content-type: application/trafficadvice+json
cache-control: public, max-age=86400
[
{
"user_agent": "prefetch-proxy",
"disallow": false,
"fraction": 0.5
}
]
Burada kontrol etmeniz gereken 3 nokta:
200 OK olmalı.content-type değeri application/trafficadvice+json veya application/json olmalı.Tarayıcı ve Performans Araçları ile İzleme
Chrome DevTools Network sekmesini açarak Google Arama üzerinden sitenize yönlendirilen prefetch isteklerini izleyebilirsiniz. Google Lighthouse Nedir? Web Sitesi Performansı Nasıl Ölçülür? yazımızdaki adımları takip ederek LCP (Largest Contentful Paint) değerlerindeki iyileşmeyi gözlemleyebilirsiniz.
Sık Yapılan Hatalar ve Çözüm Yolları
text/plain veya text/html döndürmesi Chrome proxy sisteminin dosyayı reddetmesine neden olur. application/trafficadvice+json başlığının set edildiğinden emin olun.
Yorumlar (0)
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yazın