gclid önbelleği: Reklam tıklama sorgusu, sayfa önbellek anahtarı ve ölçülen ilk bayt

gclid önbellek işleme, reklam tıklama adresinin sonuna eklenen gclid sorgusunu yok sayıp sorgusuz adresin önbellek dosyasıyla yanıt vermektir. Nginx + Apache yapılandırmalı bir WordPress sunucusunda sorguya ve önbellek durumuna göre ilk bayt ölçüldüğünde gclid'in eklediği süre 0,014–0,015 saniyeydi; birkaç saniyelik gecikmeler yalnızca önbellek kullanılamadığında oluştu.
Aynı sunucu içinde ölçülen ilk bayt, sorgu yokken 0,014–0,015 saniye, reklam tıklama sorguları eklendiğinde 0,029–0,030 saniyeydi. WordPress aynı sayfayı önbellek olmadan yeniden oluşturduğunda 3,639 ve 3,260 saniye sürdü.
1️⃣ gclid önbelleği: Reklam tıklama adresleri ve önbellek anahtarı
Google Ads otomatik etiketleme açıkken reklama tıklayan ziyaretçinin adresinin sonuna [?gclid=değer] eklenir. Bu değer reklam tıklamasını tanımlayan bir parametre olduğu için ziyaretçiden ziyaretçiye değişir; yine de aynı kişi aynı reklama tekrar tıkladığında aynı değer kullanılabilir.
Gerçek reklam tıklama adreslerinde gclid nadiren tek başına bulunur. Çoğu zaman gad_source, gad_campaignid ve gbraid de eklenir, bazen wbraid de gelir.
https://example.com/sample-page/?gad_source=1&gad_campaignid=1234567890&gbraid=EXAMPLE&gclid=EXAMPLE
https://example.com/sample-page/?gclid=EXAMPLE&gbraid=EXAMPLE&wbraid=EXAMPLEAdresin sonuna sorgu eklense de tarayıcıda aynı sayfa açılır, ama önbellek için bu farklı bir adrestir. HTTP önbellek standardı (RFC 9111), önbelleğin saklanan yanıtı seçerken baktığı önbellek anahtarını en az istek yöntemi ve hedef URI'den oluşacak şekilde tanımlar; hedef URI'ye sorgu dizesi de dahildir.
Sorgu dizesi önbellek anahtarına olduğu gibi girerse gclid değeri farklı her tıklama yeni bir adres olur. Yanıtın geçtiği CDN, nginx ve WP Rocket bu sorguyu her biri farklı bir ölçüte göre işler.
CDN'de kopya yoksa ya da önbellek anahtarı sorguları ayırt ediyorsa istek kaynak sunucuya gider. Oradan sonra hız, nginx ve WP Rocket'ın bir önbellek dosyası bulup bulmamasına bağlıdır.
2️⃣ nginx statik sunum: Sorgulu istekler Apache'ye gider
Önbellek dosyası diskte olsa bile Nginx + Apache yapılandırmasındaki nginx, sorgulu bir isteğe o dosyayı doğrudan sunmaz. Çünkü nginx'in WP Rocket önbellek dosyalarını doğrudan okumasını sağlayan aşağıdaki ayar, dosya yolunu yalnızca sorgu dizesi boşken oluşturur.
# nginx.conf — http bloğu: önbellek dosyasını atlama koşulları
map $http_cookie $rocket_cookie {
default 0;
'~*wordpress_logged_in' 1;
'~*wp-postpass' 1;
'~*comment_author' 1;
'~*woocommerce_items' 1;
}
map $request_method $rocket_method {
default 1;
GET 0;
HEAD 0;
}
map $query_string $rocket_query {
default 1;
'' 0; # yalnızca sorgu dizesi boşken 0
}
# server bloğu
set $rocket_bypass '';
if ($rocket_cookie = 1) { set $rocket_bypass '1'; }
if ($rocket_method = 1) { set $rocket_bypass '1'; }
if ($rocket_query = 1) { set $rocket_bypass '1'; }
set $rocket_file '/wp-content/cache/wp-rocket/example.com${request_uri}index-https.html';
if ($rocket_bypass = '1') { set $rocket_file ''; }
location / {
try_files $rocket_file @apache; # yol boşsa ya da dosya yoksa Apache'ye
add_header X-Rocket-Nginx-Serving-File 'HIT' always; # nginx'in önbellek dosyasından doğrudan verdiği yanıtları işaretler
}[$rocket_query] yalnızca sorgu dizesinin tamamen boş olup olmadığına baktığından, WP Rocket'ın yok saydığı gclid de diğer sorgularla aynı şekilde işlenir. Mobil kopyalar ayrı tutuluyorsa dosya adına [-mobile] ekleyen bir kontrol daha girer.
WP Rocket'ın Apache için yazdığı [.htaccess] kuralları da sorgu dizesinin boş olmasını şart koşar. nginx de olsa Apache de olsa önbellek dosyasını PHP olmadan doğrudan sunan adım yalnızca sorgusuz isteklere uygulanır.
Sorgusuz isteklerde [X-Rocket-Nginx-Serving-File: HIT] başlığı vardı; gclid ve reklam benzeri sorgular eklenen altı istekte yoktu. Sorgulu isteklerde ilk baytın 0,014–0,015 saniye gecikmesinin nedeni, önbellek dosyasını okuyup döndüren Apache ve PHP adımının yola eklenmesiydi.
curl -so /dev/null -H 'Accept-Encoding: gzip' -w '%{time_starttransfer}\n' \
'https://example.com/sample-page/'0.015127curl -so /dev/null -H 'Accept-Encoding: gzip' -w '%{time_starttransfer}\n' \
'https://example.com/sample-page/?gclid=test123'0.029525curl -sI 'https://example.com/sample-page/' | grep -i x-rocket-nginx-serving-filex-rocket-nginx-serving-file: HIT[time_starttransfer], istekten ilk baytın gelişine kadar geçen süredir. CDN'den geçmeden sunucu içinde ölçmek için [--resolve example.com:443:127.0.0.1] ekleyin.
3️⃣ WP Rocket'ın yok sayılan sorgu listesi: Aynı önbellek dosyasıyla yanıt
Sorgulu adresleri önbelleğe almamak WP Rocket'ın varsayılan davranışıdır, ama reklam tıklama sorguları istisnadır. WP Rocket karar vermeden önce yok sayılan listesindeki parametreleri çıkarır; geriye sorgu kalmazsa sorgusuz adresin önbellek dosyasıyla yanıt verir.
// wp-rocket/inc/classes/Buffer/class-tests.php (3.23.5.1)
public function get_query_params() {
// …
$params = array_diff_key( // önce yok sayılan sorguları çıkar
self::$get,
$this->config->get_config( 'cache_ignored_parameters' )
);
// …
}
public function can_process_query_string() {
// …
$params = $this->get_query_params();
if ( ! $params ) { // sorgu kalmadıysa önbellekle işle
return self::memoize( __FUNCTION__, [], true );
}
// yalnızca lang · s · permalink_name · lp-variation-id ve [Cache Query String(s)] alanına eklenen sorgular geçer
// …
}[get_query_params] yok sayılan sorguları çıkardıktan sonra boş dönerse önbellek dosyasının yolu da sorgusuz adrese göre belirlenir. gclid eklenen istek Apache ve PHP'den geçti, ama HTML sonundaki önbellek yorumu sorgusuz istekle aynıydı ve yanıt boyutu da önbellek dosyasıyla (gzip) aynı, 350.668 bayttı.
Yok sayılan sorgu listesi, WP Rocket'ın haftada bir kendi sunucularından indirip [wp-content/wp-rocket-config/dynamic-lists.json] dosyasına kaydettiği varsayılan listedir. 17 Ekim 2026 itibarıyla listede gclid, gbraid, wbraid, gad_source ve gad_campaignid var.
Listede olmayan tek bir sorgu bile karışırsa WP Rocket önbelleği kullanmaz; listede olmayan rastgele bir sorgu eklenen aynı sayfayı WordPress önbellek yorumu olmadan yeniden oluşturdu. Reklam adreslerinize kendi oluşturduğunuz izleme sorgularını da ekliyorsanız o tıklamalar her seferinde bu yoldan geçer.
Listeyi değiştirmek için WP Rocket'ın önerdiği yardımcı eklentiyi kullanın. Eklenti, [rocket_cache_ignored_parameters] filtresiyle sorgu ekler ya da çıkarır ve etkinleştirilip devre dışı bırakıldığında WP Rocket yapılandırma dosyasını yeniden oluşturur.
// WP Rocket | Ignore Query Strings 1.1.1'den (WP Rocket destek ekibinin yardımcı eklentisi)
function define_ignored_parameters( array $params ) {
$params['new_query_string'] = 1; // yok sayılan sorgulara ekle
//unset ( $params['utm_source'] ); // yok sayılan sorgulardan çıkar
return $params;
}
add_filter( 'rocket_cache_ignored_parameters', __NAMESPACE__ . '\define_ignored_parameters', 999 );
register_activation_hook( __FILE__, __NAMESPACE__ . '\flush_wp_rocket' ); // etkinleştirildiğinde rocket_generate_config_file() çalıştırırWP Rocket bu listeyi [wp-content/wp-rocket-config/] içindeki alan adıyla adlandırılmış yapılandırma dosyasına yazar ve her istekte o dosyayı okur; bu yüzden yalnızca filtreyi ekleyip yapılandırma dosyasını yeniden oluşturmazsanız yeni liste uygulanmaz. Listedeki sorgular değerleri ne olursa olsun temel adresin tek önbellek dosyasını paylaşır; bu nedenle değerine göre sayfa içeriği değişen sorguları eklemeyin.
Listede olmayan [uk_test] yardımcı eklentiye eklenip etkinleştirildiğinde yapılandırma dosyası yeniden oluşturuldu ve o sorgu listenin sonuna eklendi. Ardından sorgusuz adres ve [uk_test] değeri farklı iki adres sırayla istendi.
curl -s -o /dev/null -w '%{size_download} %{time_starttransfer}\n' -H 'Accept-Encoding: gzip' 'https://example.com/sample-page/'
curl -s -o /dev/null -w '%{size_download} %{time_starttransfer}\n' -H 'Accept-Encoding: gzip' 'https://example.com/sample-page/?uk_test=abc'
curl -s -o /dev/null -w '%{size_download} %{time_starttransfer}\n' -H 'Accept-Encoding: gzip' 'https://example.com/sample-page/?uk_test=xyz'21390 0.025720
21390 0.025507
21390 0.027929Üç istek de 0,03 saniye içinde aynı 21.390 baytla yanıt verdi; önbellek zamanını görmek için [uk_test] eklenen isteğin HTML sonu açıldı.
curl -s --compressed 'https://example.com/sample-page/?uk_test=abc' | tail -c 200ck=lazyLoadYoutubeIframe;}});</script></body>
</html>
<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me - Debug: cached@1792248839 -->Son yorumdaki önbellek zamanı sorgusuz adresin önbellek dosyasıyla aynıydı. Yardımcı eklenti etkinleştirilmeden önce aynı istek önbellek yorumu olmadan 0,36–0,38 saniyede yeniden oluşturuluyordu.
Etkinleştirmeden sonra da listede olmayan [foo] eklenen istek önbellek dosyasını kullanmadı ve yeniden oluşturuldu.
Yapılandırma dosyası yeniden oluşturulduktan hemen sonraki bir dakika boyunca [uk_test] istekleri de yeniden oluşturuldu. PHP OPcache değişen dosyaları 60 saniyede bir yeniden kontrol edecek şekilde (revalidate_freq) ayarlı olduğundan, yanıtlar ancak bir dakika geçtikten sonra önbellek dosyasından geldi.
Yardımcı eklenti devre dışı bırakılıp silindikten sonra bile yapılandırma dosyasında [uk_test] satırı kaldı. Devre dışı bırakma kodu 999 önceliğiyle eklenen filtreyi varsayılan öncelikle kaldırmaya çalıştığı için yapılandırma dosyası filtre yerindeyken yeniden oluşturulur. Sorgu ancak eklenti silindikten sonra yapılandırma dosyası bir kez daha oluşturulunca listeden çıkar.
4️⃣ CDN önbellek anahtarı: Reklam sorgularını dışarıda bırakma ve kaynak istekleri
CDN sorgu dizesini önbellek anahtarına olduğu gibi koyarsa gclid değeri farklı her tıklamada kopya bulunamaz ve istek kaynak sunucuya kadar gider. Sorguları tamamen çıkarmak bunu çözer, ama arama sonuçları gibi sorguya göre içeriği değişen adresleri olan sitelere uymaz; bu yüzden yalnızca reklam sorgularını önbellek anahtarından çıkarmak daha doğrudur.
Reklam sorguları bu şekilde çıkarıldığında CDN gclid değeri farklı olsa da sorgusuz adresle aynı kopyayla yanıt verir; yalnızca kopya yoksa isteği sorgu ekli hâlde kaynak sunucuya gönderir.
# gclid değeri farklı iki isteğin CDN önbellek durumu (başlık adları CDN'ye göre değişir)
curl -sI 'https://example.com/sample-page/?gclid=test1' | grep -i -E 'cache|age'curl -sI 'https://example.com/sample-page/?gclid=test2' | grep -i -E 'cache|age'Değerleri farklı iki istek de HIT ise ve kopyaların kaydedilme zamanı sorgusuz adresle aynıysa, o CDN gclid'i önbellek anahtarının dışında tutuyordur. Kopyası olmayan bir noktadaki ilk ziyaret, CDN reklam sorgularını anahtardan çıkarsa bile kaynak sunucudaki nginx ve WP Rocket işleminden yine geçer.
5️⃣ Reklam tıklamalarını yavaşlatan şey: Boş sayfa önbelleği
Reklamdan gelen ilk sayfa yavaş açılınca gclid'in önbelleği atladığını düşünmek kolaydır, ama önbellek dosyası varsa sorgu eklense de aynı önbellek dosyası sunulur. İlk bayta saniyeler ekleyen şey, önbellek dosyasının boş olması ve WordPress'in sayfayı baştan oluşturmasıdır.
Önbellek dosyaları şu ayarda belirlenen süre dolunca silinir: Önbellek ömrü – WP Rocket'ın varsayılanı 10 saattir. Bir yazı ya da ayarlar kaydedildiğinde ilgili önbellek de silinir; WP Rocket'ın haftada bir indirdiği liste yeni sürümle değiştirilip kaydedildiğinde de tüm site önbelleği boşaltılır.
Ön yükleme (preload) açıksa WP Rocket boşaltılan adresleri yeniden açıp önbelleği doldurur; bundan önce gelen ziyaretçiler sayfa oluşturulurken bekler. Yalnızca reklam sorgusu olan bir istek de önbellek dosyasını sorgusuz adres adına oluşturduğundan, boş önbelleğe ilk denk gelen reklam tıklaması bir sonraki ziyaretçinin önbelleğini doldurur.
Önbellek boşaltıldıktan hemen sonra reklam benzeri sorgularla açılan ilk istek önbellek dosyası bulamadı ve 0,341–0,369 saniyede yeniden oluşturuldu; aynı saniyede sorgusuz adresin önbellek dosyası oluştu.
curl -s -o /dev/null -w '%{size_download} %{time_starttransfer}\n' -H 'Accept-Encoding: gzip' 'https://example.com/sample-page/?gclid=EXAMPLE1'
ls -l --time-style='+%F %T' wp-content/cache/wp-rocket/example.com/sample-page/
curl -s -o /dev/null -w '%{size_download} %{time_starttransfer}\n' -H 'Accept-Encoding: gzip' 'https://example.com/sample-page/'21361 0.366881
Toplam 116
-rw-r--r-- 1 example nobody 90908 2026-10-17 23:56:38 index-https.html
-rw-r--r-- 1 example nobody 21385 2026-10-17 23:56:38 index-https.html_gzip
21385 0.025379Üç seferde de sıra aynıydı; ardından açılan sorgusuz istek yeni önbellek dosyasıyla 0,023–0,025 saniyede yanıtlandı. İstek mobil cihazdan gelmediği için yalnızca iki masaüstü dosyası oluştu.
Reklamlarınızın bağlandığı adreslerde önbellek dosyasının olup olmadığını ve ne zaman oluşturulduğunu kendiniz kontrol edin; mobil kopyalar ayrı oluşturuluyorsa masaüstü ve mobil dosyaları birlikte kontrol edin.
ls -l --time-style='+%F %T' wp-content/cache/wp-rocket/example.com/sample-page/Toplam 3520
-rw-r--r-- 1 example nobody 1445922 2026-10-17 14:07:44 index-https.html
-rw-r--r-- 1 example nobody 350668 2026-10-17 14:07:44 index-https.html_gzip
-rw-r--r-- 1 example nobody 1446862 2026-10-17 14:07:47 index-mobile-https.html
-rw-r--r-- 1 example nobody 351042 2026-10-17 14:07:47 index-mobile-https.html_gzipcurl -s --compressed 'https://example.com/sample-page/?gclid=test123' | tail -c 200n/1/wp-content/uploads/example-plugin/style.css' media='all' /></noscript></body>
</html>
<!-- Cached for great performance - Debug: cached@1792213663 -->Önbellek dosyasından çıkan yanıtta HTML sonundaki yorumda [Debug: cached@] ifadesinden sonra dosyanın oluşturulduğu zaman Unix zamanı olarak yazar. Bu işaret yoksa o yanıtı WordPress baştan oluşturmuştur.
🔢 SSS & önerilen içerikler














ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

