Web sitesi önbelleği & sunucu içi önbellek: WordPress önbelleği nasıl çalışır

Satış ortaklığı bildirimi v3.1
Satış ortaklığı bildirimi v3.2 (yalnızca mobil)

Web sitesi önbelleğini ve sunucu içi önbelleği Nginx + Apache yapılandırmalı bir sunucuda kontrol ettiğimde, WordPress sayfa istekleri tarayıcıdan başlayıp CDN, sayfa önbelleği, OPcache ve Redis sırasıyla aşağı indi ve kopyası bulunan katmanda durdu. Doğrudan kaynak sunucuya gelen sayfa isteklerinde nginx, WP Rocket'in oluşturduğu HTML dosyasını hemen gönderdi; istekler PHP'ye ve veritabanına kadar inmedi.

Ⅰ. WordPress önbellek yapısı

Bilgisayarlarda önbellek, verilere hızlı erişilebilmesi için onları geçici olarak saklayan bir tekniktir; web'de de aynı ilkeyle çalışır ve performansı artırmaya büyük katkı sağlar.

Önbelleğe alma verileri sakladığı için ziyaretçi bir web sitesine her girdiğinde her şey sunucudan yeniden istenmez; saklanan veriler hızla yüklenir ve sayfa yükleme süresi kısalır. Böylece sunucu yükü azalır ve kullanıcı deneyimi iyileşir.

WordPress isteklerinde kullanılan önbellekler iki kola ayrılır: web sitesi önbelleği ve sunucu içi önbellek. HTTP önbellekleme standardı, MDN'in anlattığı biçimiyle, yalnızca tek bir ziyaretçinin tarayıcısında saklanan önbelleği private cache, birçok ziyaretçinin ortak kullandığı CDN ve proxy önbelleklerini ise shared cache olarak ayırır; bu yazıda bu ikisini web sitesi önbelleği olarak bir araya getirdim.

Sayfa önbelleği, OPcache ve nesne önbelleği, WordPress'in sunucu içinde çalıştığı sürece eklenen önbelleklerdir. HTTP standardında bunlar için ayrı bir sınıf yoktur; WordPress resmî belgeleri bunları önbellekleme eklentileri (sayfa önbelleği), nesne önbelleği ve sunucu önbelleği (OPcache gibi opcode önbellekleri) olarak ayırarak anlatır.

🗂️ Bir WordPress isteğinin geçtiği önbellekler
🌐 Web sitesi önbelleğiHTTP önbelleği · MDN sınıflandırması
private cacheTarayıcı önbelleği
shared cache
proxy cacheŞirket ve operatör ağlarındaki proxy'ler
managed cacheCDN · ters proxy (Varnish)
🖥️ Sunucu içi önbellekWordPress resmî belgelerindeki sınıflandırma
Sayfa önbelleğiBir önbellekleme eklentisinin oluşturduğu statik HTML (WP Rocket)
OPcacheOpcode önbelleği · PHP çalıştırma
Nesne önbelleğiİstek bittikten sonra da kalan veriler (Redis)

Önbelleğin kullanıldığı tüm alanları Önbellek: tanımı ve önbelleğe almanın kullanıldığı tüm alanlar yazısında, önbelleği de kapsayan performans optimizasyonunun dört dalını ise Web performansı optimizasyonu: yapısı ve tanımı yazısında anlattım.

Aşağıdaki simülatörde soldaki ağaçtan bir önbellek seçip bir düğmeye basarsanız isteğin hangi katmanda durduğunu görebilirsiniz. WordPress site sahiplerinin bir önbellekleme eklentisiyle ilk açtığı katman sayfa önbelleğidir.

🧭 Önbellek katmanı simülatörüAçıklama simülatörü
🗂️ Bir WordPress isteğinin geçtiği önbellekler
🧰 İstek türü
Tarayıcı önbelleği
Ziyaretçinin tarayıcısında saklanan HTTP önbelleğidir. [Görsel · CSS] seçiliyken [İlk ziyaret] → [Tekrar ziyaret] düğmelerine basarsanız ikinci seferden itibaren sunucuya istek gitmez.
HTTP önbellek başlıkları
Sunucunun tarayıcılara ve CDN'lere saklama süresini bildirdiği kurallardır. Yanıt kaydındaki başlık satırları, Nginx + Apache yapılandırmalı bir sunucudan alınmış gerçek değerlerdir.
CDN · proxy önbelleği
Birçok ziyaretçinin ortak kullandığı kopyadır. [CDN kullan] seçeneğini açıp [İlk ziyaret] → [Tekrar ziyaret] düğmelerine basarsanız yanıt edge sunucusunda biter.
Sayfa önbelleği
PHP'nin oluşturduğu HTML'yi dosya olarak saklar. [Tekrar ziyaret] düğmesine basarsanız istek PHP'ye ve veritabanına kadar inmez.
OPcache
Derlenmiş PHP bayt kodunu bellekte tutar. [Düzenlemeden sonra ziyaret] seçeneğinde PHP yeniden çalışır ama derleme atlanır.
Nesne önbelleği
Sorgu sonuçlarını Redis'te saklar. [Düzenlemeden sonra ziyaret] seçeneğinde yalnızca değişen yazı verileri MariaDB'den yeniden okunur.
Tüm akış
İstek yukarıdan aşağıya iner ve kopyası olan ilk katmanda durur.
KatmanSaklandığı yerSakladığı şeyNginx + Apache yapılandırması örneği
Tarayıcı önbelleğiZiyaretçinin cihazıHTML · CSS · JS · görseller · yazı tipleriCSS · görseller 7 gün
CDN · proxy önbelleğiSunucunun önü (edge · ters proxy)Sayfa · statik dosya kopyalarıBunny CDN
Sayfa önbelleğiSunucu diski · belleğiPHP'nin oluşturduğu HTMLWP Rocket + nginx
OPcacheSunucu belleğiPHP bayt koduPHP 8.3, JIT kapalı
Nesne önbelleğiSunucu belleğiSorgu sonuçları · nesnelerRedis
Yalnızca tarayıcınızda çalışan bir açıklama simülatörüdür. Yanıt kaydındaki başlık satırları 10 Ekim 2026'da Nginx + Apache yapılandırmalı bir sunucudan alınan değerlerdir; düzenleme sonrası ETag gibi parantez içinde yazılan değerler örnektir.

Ⅱ. Web sitesi önbelleği

Web sitesi önbelleği, sunucu yanıt başlıklarıyla nasıl saklanacağını bildirdiğinde ziyaretçinin tarayıcısının ve CDN ile proxy'lerin bu talimata göre kopya sakladığı önbellektir. Başlıca başlıklar şunlardır: [Cache-Control], [ETag] ve [Expires]. Saklama süresi dolunca koşullu bir istekle ([304 Not Modified]) değişip değişmediği kontrol edilir.

1️⃣ Tarayıcı önbelleği

Tarayıcı önbelleği, ziyaretçinin web tarayıcısında saklanan HTTP önbelleğidir; HTML, CSS, JavaScript, görselleri ve yazı tiplerini saklar ve aynı kaynak yeniden istendiğinde sunucuya hiç gitmez ya da yalnızca değişip değişmediğini kontrol eder.

Saklama süresini ziyaretçi değil sunucu belirler. Aşağıdaki Nginx + Apache yapılandırmalı sunucu CSS ve görseller için 7 gün belirtir, HTML sayfalarını ise süre vermeden, her yeni ziyarette yeniden kontrol edilecek şekilde yanıtlar.

📨 Ölçülen yanıt başlıklarıNginx + Apache yapılandırması · 2026-10-10
💻 Ziyaretçinin bilgisayarıTarayıcı önbelleği
──────▶① İlk istekGET /style.css
🖥️ Web sitesi sunucusuNginx + Apache
💻 Ziyaretçinin bilgisayarıTarayıcı önbelleği
◀──────② Dosya + saklama talimatıcache-control: max-age=604800
🖥️ Web sitesi sunucusuNginx + Apache
③ Tarayıcı talimata göre dosyayı 7 gün saklar ve bu süre içindeki ziyaretlerde sunucuya istek göndermez.
💻 Ziyaretçinin bilgisayarıTarayıcı önbelleği
──────▶④ Süre dolduktan sonra kontrolIf-None-Match: "6ab12775-2ee8"
🖥️ Web sitesi sunucusuNginx + Apache
💻 Ziyaretçinin bilgisayarıTarayıcı önbelleği
◀──────⑤ DeğişmediHTTP/2 304 (gövde yok)
🖥️ Web sitesi sunucusuNginx + Apache
🖼️ CSS · görseller
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Tarayıcıda 7 gün boyunca sunucuya yeniden sorulmadan saklanan kopya kullanılır.
📄 HTML sayfası
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Saklama süresi belirtilmediği için yeniden ziyarette tarayıcı önce ETag ile değişip değişmediğini sorar.
Aynı ETag ile yeniden istendiğinde sunucu gövde olmadan yalnızca [HTTP/2 304] döndürür ve tarayıcı saklanan kopyayı olduğu gibi kullanır.

2️⃣ CDN · proxy önbelleği

CDN ve proxy önbellekleri, ziyaretçiler ile kaynak sunucu arasında bulunan ve birçok ziyaretçinin ortak kullandığı önbelleklerdir. İleri proxy şirket ağlarında olduğu gibi ziyaretçi tarafının önünde, ters proxy ve CDN ise sunucunun önünde durarak kaynak sunucu yerine saklanan kopyayla yanıt verir.

Tipik bir ters proxy örneği Varnish Cache olup Bunny CDN ve Akamai gibi CDN'ler de aynı yapıyı izler. Bölgesel DNS kullanılırsa kaynak sunucunun bulunduğu bölgedeki ziyaretçiler doğrudan kaynak sunucuya bağlanır, diğer bölgelerdeki ziyaretçilere ise HTML'yi bile saklayan yakındaki bir CDN edge sunucusu (ör. Bunny CDN) yanıt verir.

👤 Kaynak sunucu bölgesindeki ziyaretçiDNS kaynak adresini verir
→
🖥️ Kaynak sunucuCDN'den geçmeden doğrudan yanıt verir.
👤 Başka bölgedeki ziyaretçiDNS yakındaki edge adresini verir
→
☁️ Bunny CDN edge sunucusuHTML ya da dosya kopyası varsa burada yanıt verir.
→
🖥️ Kaynak sunucuYalnızca edge sunucusunda kopya olmadığında buraya gidilir.

CDN'in yapısını ve avantajlarını CDN nedir? CDN kullanma nedenleri ve 5 avantajı yazısında anlattım.

Ⅲ. Sunucu içi önbellek

Sunucu içi önbellek, istek kaynak sunucuya ulaştıktan sonra WordPress'in sayfayı oluşturduğu sürece eklenen önbellektir. Nginx + Apache ile kurulmuş bir sunucu istekleri aşağıdaki sırayla işler; önceki adımda kopya bulunursa sonraki adımlar atlanır.

🅐 Sayfa önbelleğinde dosya varsaOturum açmamış ziyaretçilerin sayfa isteklerinin çoğu
① nginx isteği alırWeb sunucusu kaynak sunucuya ulaşan isteği alır.
↓
1️⃣ Sayfa önbelleği ↓② Sayfa önbelleği dosyasıyla yanıtnginx, WP Rocket'in oluşturduğu HTML dosyasını olduğu gibi gönderir.x-rocket-nginx-serving-file: HIT
PHP · OPcache · Redis · MariaDB adımlarından geçmeden biter.
🅑 Sayfa önbelleğinde dosya yoksaÖnbellek temizlendikten hemen sonraki ilk ziyaret · giriş ekranı · AJAX istekleri
① nginx isteği alırDosya olmadığı için istek Apache'ye devredilir.
↓
2️⃣ OPcache ↓② PHP çalışır · OPcacheWordPress PHP dosyalarını derlenmiş bayt kodu olarak çalıştırır.
↓
3️⃣ Nesne önbelleği ↓③ Nesne önbelleği (Redis)Saklanan sorgu sonuçları ve nesneler Redis'ten alınır.
↓
④ MariaDBYalnızca Redis'te olmayan verileri sorgular, sık kullanılan verileri ise InnoDB tampon havuzundan (bellek) okur.
↓
⑤ Yanıt · sayfa önbelleğine kaydetmeHazırlanan HTML gönderilir ve WP Rocket onu dosya olarak kaydeder; böylece sonraki istek 🅐 yolundan işlenir.
Nginx + Apache yapılandırmasına göre (yalnızca sayfa önbelleği dosyası yoksa Apache ve PHP'ye devredilir), 2026-10-10 tarihinde kontrol edildi.

Nginx + Apache yapılandırmasını Cloudways'te ve ScalaHosting'de seçenek olarak seçebilirsiniz. Cloudways'te her uygulama için Hybrid stack (Nginx + Apache) ile Lightning stack (yalnızca Nginx) arasından birini seçersiniz; ScalaHosting'de ise SPanel'de Nginx'i Apache'nin önüne koyan ayarı açabilirsiniz.

🖥️ Nginx + Apache seçilebilen hostingler
CloudwaysUygulama başına stack seçimi
Hybrid stackNginx + Apache
Lightning stackYalnızca Nginx
Cloudways →
ScalaHostingSPanel web sunucusu ayarı
VarsayılanApache
Nginx'i açmaNginx + Apache
ScalaHosting →
ÖnbellekSakladığı şeyNe zaman saklanır
1️⃣ Sayfa önbelleğiHazır HTML sayfası🅑 ⑤ Yanıt verilirken WP Rocket dosyaya kaydeder
2️⃣ OPcacheDerlenmiş PHP kodu (bayt kodu)🅑 ② Bir PHP dosyası ilk kez çalıştığında
3️⃣ Nesne önbelleğiSorgu sonuçları ve seçenekler gibi veri parçaları🅑 ③ WordPress verileri ilk kez aldığında

1️⃣ Sayfa önbelleği

  • ↪️ Tam sayfa önbelleği ya da HTML önbelleği

Sayfa önbelleğine tam sayfa önbelleği (full-page cache) da denir; sakladığı şey HTML olduğu için HTML önbelleği olarak da anılır. PHP'nin oluşturduğu web sayfasının tamamını statik bir HTML dosyası olarak saklar ve aynı sayfa istendiğinde PHP'yi çalıştırmadan o dosyayı gönderir. Yukarıdaki işlem sırasındaki 🅐 durumudur.

Saklandığı yer sunucu belleği (RAM) ya da disktir (HDD/SSD); bellek hızlıdır ama pahalı ve kapasitesi sınırlıdır, disk ise geniş kapasitelidir ama görece yavaştır.

TipÖrnekSaklama ve yanıt biçimi
Önbellekleme eklentisiWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress sayfayı HTML dosyası olarak kaydeder, web sunucusu da o dosyayı gönderir.
Web sunucusu önbelleğiNginx FastCGI önbelleği · LiteSpeed CacheWeb sunucusu PHP yanıtını kendisi saklar ve sonraki istekte gönderir.
Ters proxy önbelleğiVarnishWeb sunucusunun önüne konan bir önbellek sunucusu sayfayı saklayıp yanıt verir.

Nginx + Apache yapılandırmasında nginx, WP Rocket'in oluşturduğu HTML dosyasını doğrudan okuyup gönderir ve yanıt başlığına [x-rocket-nginx-serving-file: HIT] eklenir. WP Rocket ile sayfa önbelleğini açma ve ayarlama adımlarını WP Rocket ayar rehberi yazısında anlattım.

2️⃣ OPcache

OPcache, önceden bayt koduna derlenmiş PHP kodunu bellekte saklar; böylece aynı dosya yeniden çalıştırılırken PHP ayrıştırıcısından geçmez. PHP 5.5'ten beri yerleşik olarak gelir; eskiden kullanılan APC ve XCache, PHP 7'yi desteklemediği için artık kullanılmaz. Yukarıdaki işlem sırasında 🅑 durumunun ② adımıdır.

TipDurumAçıklama
Zend OPcachePHP 5.5'ten beri yerleşikBugün kullanılan standart opcode önbelleğidir; [opcache.enable=1] ile açılır.
OPcache JITPHP 8'den beri OPcache'in içindeBayt kodunu bir kez daha makine koduna çevirip çalıştırır; [opcache.jit] ile açılıp kapatılır.
APCGeliştirme sona erdiOPcache'ten önce kullanılan opcode önbelleğidir; veri önbelleği özelliği APCu ile sürdü.
XCacheGeliştirme sona erdiPHP 7'yi desteklemez.
WinCacheWindows (IIS) sunucuları içinWordPress resmî belgelerinin OPcache ile birlikte andığı bir opcode önbelleğidir.

OPcache, PHP ayarı [opcache.enable=1] ile açılır; PHP 8 ile gelen JIT ise [opcache.jit=disable] ile ayrıca kapatılabilir. Kurulum ve ayarlar Zend OPcache: kavramı, kurulumu ve ayarları yazısında anlatılıyor.

3️⃣ Nesne önbelleği

Nesne önbelleği, veritabanı sorgu sonuçlarını ya da hesaplanmış nesneleri Redis veya Memcached gibi bir bellek deposunda saklar. WordPress varsayılan olarak nesneleri yalnızca tek bir istek içinde hatırlar; sonuçların istek bittikten sonra da kalması için Redis gibi bir depo bağlamanız gerekir. Yukarıdaki işlem sırasında 🅑 durumunun ③ adımıdır.

TipTürİstek bitince kalır mı?Açıklama
WP_Object_CacheWordPress varsayılanıHayırYalnızca tek bir istek içinde hatırlayan yerleşik önbellektir.
RedisNesne önbelleğiEvetAyrı bir bellek deposudur; Redis Object Cache eklentisinin drop-in dosyasıyla bağlanır.
MemcachedNesne önbelleğiEvetAyrı bir bellek deposudur.
APCuNesne önbelleğiEvet (aynı sunucu içinde)PHP'nin kullandığı paylaşılan bellekte saklar.
DosyaNesne önbelleğiEvetDiskte dosya olarak saklar.
InnoDB tampon havuzuVeritabanının kendi önbelleği · nesne önbelleği değilEvetMySQL ve MariaDB tablo verilerini ve dizinleri bellekte tutar.
Sorgu önbelleğiVeritabanının kendi önbelleği · nesne önbelleği değil—MySQL 8.0 sürümünde kaldırıldı; MariaDB'de hâlâ var ama varsayılan olarak kapalıdır.

WordPress, Redis Object Cache eklentisinin eklediği drop-in dosyasıyla ([object-cache.php]) Redis'e bağlanır. Kurulum adımları WordPress Redis Cache kurulumu ve ayarları yazısında anlatılıyor.

🔢 SSS & önerilen içerikler

Sayfa önbelleğinde ya da CDN'de kalan eski bir kopya yanıt veriyordur. Önbellekleme eklentisinden o yazının önbelleğini temizleyin; CDN kullanıyorsanız CDN'deki kopyayı da temizleyin.

WP Rocket gibi sayfa önbelleği eklentileri varsayılan ayarlarda oturum açmış kullanıcılara saklanan sayfaları göndermez. Yönetim ekranları ve oturum açıkken görülen sayfalar her seferinde PHP tarafından yeniden oluşturulur; bu durumda hızı OPcache ve nesne önbelleği destekler.

Chrome'da [Ctrl+Shift+R] (Mac'te [Cmd+Shift+R]) tuşlarına basarsanız mevcut sayfa önbellek kullanılmadan yeniden yüklenir. Saklanan önbelleğin tamamını silmek için sağ üstteki [Diğer] → [Tarama verilerini sil] bölümünde [Önbelleğe alınan resimler ve dosyalar] seçeneğini işaretleyip silin.

💾 Önbellek ile ilgili yazılar 10 yazı
🗂️ Önbellek
📋 Önbellek: tanımı ve tüm alanlar 📄 Web sitesi önbelleği & sunucu içi önbellek
📋 WP Rocket ayar rehberi 📝 Zend OPcache 📝 Redis Cache kurulumu
📝 CDN nedir? 📝 Varnish Cache
📋 WP Rocket hız testi 📝 Hızlandırma örneği 📝 Önbellek · optimizasyon eklentileri

ℹ️ 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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 2   +   1   =