Önbellek çoğu satıcının kafasında tek bir düğmedir: "cache'i açtım, site hızlandı." Bu cümlenin ardından gelen hikâye ise hep aynıdır. Bir hafta sonra müşteri "stokta var yazıyordu ama satın alamadım" der, bir başkası paneline girdiğinde bakiyesini eski görür, üçüncüsü indirimli fiyatı kampanya bittikten sonra da görmeye devam eder. Site gerçekten hızlanmıştır, evet; ama artık yanlış bilgiyi hızlı gösteriyordur.
Önbelleği doğru kurmanın sırrı hız ayarında değil, neyin önbelleğe girmeyeceğine karar vermekte. E-pin ve dijital ürün satışında veri iki gruba ayrılır: herkes için aynı ve saniyesi önemsiz olanlar, kişiye özel ve saniyesi kritik olanlar. İlk grubu agresif önbelleğe alırsın, ikincisine hiç dokunmazsın. Bu ayrımı netleştirmeden kurulan her e-pin scripti önbelleği, performans kazancı kadar veri tutarsızlığı borcu üretir. Aşağıda katmanları, kuralları ve kampanya anında önbelleğin nasıl davranması gerektiğini sırayla kuruyoruz.
Önbellek bir hız aracı değil, doğruluk riskidir
Önbellek mantığı özünde şudur: pahalı bir hesabı bir kez yap, sonucunu sakla, bir süre boyunca aynı sonucu ver. Kazandığın şey süre; ödediğin bedel ise eskimişlik. Blogda eskimişlik zararsızdır, ürün listesinde katlanılabilir, stokta ise doğrudan para kaybıdır. Çünkü tükenmiş bir kodu "stokta" göstermek, kullanıcıyı ödeme adımına kadar götürüp orada hayal kırıklığına uğratır ve iade talebi üretir.
Bu yüzden strateji kurarken önce bir eskimişlik bütçesi yaz. Her veri türü için "bu bilgi en fazla kaç saniye eski olabilir" sorusunu cevapla. Ana sayfa vitrini için 120 saniye kabul edilebilir olabilir. Kategori listesi için 60. Ürün fiyatı için 30. Stok adedi için sıfır. Bu bütçe tablosu, teknik kararların tamamını belirler ve seni "her şeyi önbelleğe al" tuzağından kurtarır. İyi kurgulanmış bir dijital ürün satış scripti bu ayrımı varsayılan olarak yapar.
Katmanları ayır: opcode, nesne, sayfa ve kenar
Önbellek tek şey değil, dört farklı katmandır ve her biri farklı bir işi çözer. Opcode önbelleği PHP dosyalarının derlenmiş hâlini bellekte tutar; hiçbir veri riski taşımaz, kapalıysa derhal açılır. Nesne önbelleği sorgu sonuçlarını ve hesaplanmış değerleri tutar; en yüksek fayda/risk oranı buradadır. Sayfa önbelleği tüm HTML çıktısını saklar; en hızlısıdır ama kişiye özel içerikle karıştığında en tehlikelisidir. Kenar önbelleği ise görsel, stil ve betik dosyalarını ziyaretçiye yakın noktadan sunar.
Sıra önemlidir. Opcode ve kenar katmanını hemen aç, çünkü ikisinin de doğruluk maliyeti yoktur. Sonra nesne önbelleğini seçici biçimde devreye al. Sayfa önbelleğini en son ve yalnızca giriş yapmamış ziyaretçiler için kur; oturum çerezi taşıyan isteği önbellekten hiç servis etmemek en güvenli kuraldır. Bu dört katmanı doğru sırayla kurmak, çoğu e-pin yazılımı kurulumunda sunucu büyütmeye hiç gerek bırakmaz.
| Veri türü | Önbellek katmanı | Önerilen TTL | Geçersiz kılma tetiği |
|---|---|---|---|
| Ana sayfa vitrini | Sayfa (misafir) + nesne | 120 sn | Ürün/kampanya güncellemesi |
| Kategori ve arama listesi | Nesne | 60 sn | Ürün ekleme veya sıralama değişimi |
| Ürün fiyatı ve açıklaması | Nesne | 30 sn | Fiyat kaydı |
| Stok adedi ve satılabilirlik | Önbelleğe alınmaz | 0 | - |
| Kullanıcı bakiyesi ve sipariş geçmişi | Önbelleğe alınmaz | 0 | - |
| Kur ve döviz değeri | Nesne | 300 sn | Kur çekme işi |
| Blog ve yardım içeriği | Sayfa + kenar | 24 saat | İçerik yayını |
| Görsel, stil, betik | Kenar + tarayıcı | 1 yıl (sürümlü) | Dosya adı sürümü |
Neyi asla önbelleğe almazsın?
Kısa liste ama pazarlık kabul etmez. Stok adedi, kod havuzu durumu, kullanıcı bakiyesi, sepet içeriği, sipariş durumu, teslim edilen kodun görüntülendiği ekran ve ödeme geri dönüş adresleri önbelleğe girmez. Bunların hepsi ya kişiye özeldir ya da yanlış gösterildiğinde doğrudan maddi sonuç doğurur. Sepet içeriğini yanlışlıkla sayfa önbelleğine sokan bir kurulumda iki farklı kullanıcının aynı sepeti görmesi mümkündür; bu, hız kazancıyla asla telafi edilemeyecek bir güven kaybıdır.
İkinci tehlike, kişiye özel parçaların genel bir sayfanın içine gömülmesidir. Header'da "Hoş geldin Mehmet, bakiyen 240 TL" yazıyorsa o sayfa artık genel değildir. Çözüm parçayı ayırmak: sayfanın kendisi önbellekten gelir, kişiye özel bölüm ayrı ve önbelleksiz bir istekle doldurulur. Bu yaklaşım, hem hızı hem doğruluğu korur ve profesyonel bir e-pin satış yazılımı ile amatör kurulum arasındaki en görünür farklardan biridir.
Hedef önbellek isabet dağılımı (istek bazında)
- Kenar ve tarayıcı katmanı 50%
- Nesne önbelleği isabeti 25%
- Sayfa önbelleği isabeti 15%
- Zorunlu canlı istek 10%
Geçersiz kılma stratejisi: TTL mi, olay mı?
Önbellek yönetiminin gerçek zorluğu veriyi saklamak değil, doğru anda atmaktır. İki yöntem var. TTL yaklaşımı basittir: her kayda bir ömür ver, süresi dolunca yeniden hesaplanır. Olay tabanlı yaklaşım daha keskindir: fiyat kaydedildiği anda o ürünün önbellek anahtarını sil. Doğru cevap ikisini birlikte kullanmaktır. TTL güvenlik ağı olarak kalır, olaylar ise kritik değişikliklerin anında yansımasını sağlar.
Burada iki pratik kural işini kolaylaştırır. Birincisi anahtar isimlendirmesini disiplinli kur: ürün, dil, para birimi ve kullanıcı grubu anahtarın içinde geçsin; böylece hedefli silme yapabilirsin. İkincisi "tüm önbelleği temizle" düğmesini son çare olarak gör. Her küçük değişiklikte topyekûn temizlik yapan bir kurulum, kampanya anında kendi kendine yük bindirir. Yönetim panelindeki hedefli temizleme araçları tam bu yüzden vardır.
Yeniden hesaplama sürerken eski kaydı silmek yerine kısa süre daha servis etmeye devam et. Ziyaretçi hiç beklemez, arka planda tazelenir. Bu tek ayar, tazelenme anındaki ani yavaşlamaları tamamen ortadan kaldırır.
Cache stampede: kampanya anının sessiz katili
Senaryo şu: popüler bir kategori sayfasının önbelleği tam kampanya başlarken süresini doldurur. O anda sitede bekleyen beş yüz kullanıcı aynı saniyede aynı sayfayı ister, hiçbiri önbellekte bulamaz ve beş yüz istek birlikte veritabanına gider. Hesaplama pahalı olduğu için hepsi yavaşlar, işçi havuzu dolar ve site durur. Bu olaya önbellek izdihamı denir ve en sinsi yanı tam olarak önbellek çalıştığı için oluşmasıdır.
Üç önlem yeterlidir. Birincisi kilitle tazeleme: ilk gelen istek hesaplama kilidini alır, diğerleri eski kaydı görmeye devam eder. İkincisi TTL'ye rastgele sapma eklemek; böylece binlerce anahtar aynı saniyede değil, dağılmış biçimde yenilenir. Üçüncüsü kampanya öncesi ısıtma: indirim açılmadan on dakika önce kritik sayfaları kendi kendine gezdirerek önbelleği doldur. Bu üç önlem bir arada, tepe anındaki veritabanı yükünü dramatik biçimde düşürür.
Ölçme: isabet oranı, TTFB ve tutarsızlık avı
Önbellek kurduktan sonra tek soru kalır: işe yarıyor mu? Üç ölçüm bunu söyler. İsabet oranı katman katman izlenir; nesne önbelleğinde %80'in altındaysa ya TTL çok kısadır ya anahtarlar gereğinden fazla parçalanmıştır. TTFB önbellekli ve önbelleksiz istekler için ayrı ölçülür; ikisi arasındaki fark kazancın gerçek büyüklüğünü verir. Üçüncüsü en çok atlanan ölçümdür: tutarsızlık avı.
Tutarsızlık avı basit bir alışkanlıktır. Haftada bir, fiyatı panelden değiştir ve site üzerinde kaç saniyede yansıdığını saat tutarak ölç. Aynısını stok tüketerek, kampanya bitirerek ve bakiye ekleyerek tekrarla. Yansıma süresi eskimişlik bütçende yazdığın değerden büyükse, önbellek stratejinde bir yerde sızıntı var demektir. Bu beş dakikalık ritüel, aylar sonra ortaya çıkacak müşteri şikâyetlerini baştan önler ve dijital ürün satış yazılımı kurulumunun sağlığını en dürüst biçimde gösterir.
| Kontrol | Beklenen sonuç | Sıklık |
|---|---|---|
| Opcode önbelleği açık ve yeterli bellekte | Tam kapasite, sıfır yeniden derleme | Kurulumda ve her güncellemede |
| Oturumlu istek sayfa önbelleğinden servis edilmiyor | Giriş yapan kullanıcı her zaman canlı içerik görür | Her sürüm sonrası |
| Stok ve bakiye anahtarı önbellekte yok | Arama sonucu boş | Ayda bir |
| TTL değerlerine rastgele sapma eklendi | Yenilenmeler zamana dağılmış | Kurulumda |
| Kilitle tazeleme etkin | Tek hesaplama, diğerleri eski kaydı görür | Kurulumda |
| Kampanya öncesi ısıtma çalıştırıldı | Kritik sayfalar tepe anında dolu | Her kampanya |
| Fiyat değişimi yansıma süresi ölçüldü | Bütçelenen saniyenin altında | Haftada bir |
| Statik dosyalar sürümlü ve uzun ömürlü | Sürüm değişmeden tarayıcı yeniden indirmez | Her dağıtımda |
Hızı doğruluktan ödün vermeden al
Katmanlı önbellek, hedefli geçersiz kılma ve kampanya ısıtması kurulu gelen bir altyapıyla başla.
Stok bilgisini kısa TTL ile önbelleğe alabilir miyim?
Önerilmez. On saniyelik bir TTL bile tükenmiş bir kodu satılabilir göstermeye yeter ve bu doğrudan iade üretir. Stok kararını her zaman canlı veriden, tercihen atomik bir güncelleme içinde ver.
Sayfa önbelleği mi nesne önbelleği mi daha faydalı?
Nesne önbelleği daha güvenli ve daha esnektir; kişiye özel içerikle aynı sayfada yaşayabilir. Sayfa önbelleği daha hızlıdır ama yalnızca giriş yapmamış ziyaretçiler için kurulmalıdır.
Her değişiklikte tüm önbelleği temizlemek sorun olur mu?
Yoğun anlarda evet. Topyekûn temizlik, ardından gelen tüm istekleri aynı anda veritabanına yükler ve önbellek izdihamı üretir. Hedefli anahtar silme ile çalışmak doğru yoldur.
Önbelleğin çalıştığını nasıl doğrularım?
Katman bazında isabet oranını, önbellekli ve önbelleksiz TTFB farkını ve fiyat değişiminin siteye yansıma süresini ölç. Bu üç sayı hem kazancı hem de tutarsızlık riskini birlikte gösterir.
Doğru önbellek stratejisi, sitenin neyi hızlı göstereceğine değil neyi asla eski göstermeyeceğine karar vermekle başlar. Bu dengeyi kurulu hâlde görmek istersen canlı demo üzerinde ürün listesiyle stok ekranının farklı davrandığını kendi gözünle test et, sonra paket adımına geçip kendi mağazanı bu düzenle kur.

