# Cloudflare Workers + KV ile edge cache kurarsam invalidation'ı nasıl yaparım?

> Fiyat değiştiği an aynı transaction ya da outbox içinde KV'ye write-through yapın veya key'i silin; kısa TTL ve versiyonlu key yalnızca emniyet ağıdır.

- Soruldu: 2026-05-08
- Yanıtlandı: 2026-05-11
- Soran: Tolga
- Etiketler: altyapi, cloudflare, caching
- Kaynak: https://www.muhammetsafak.com.tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
**Soru:** API'ımın bazı uçları (örn. dinamik fiyat listeleri) sık değişmiyor ama kullanıcıya en yakın lokasyondan çok hızlı dönmeli. Tüm trafiği origin'e (EC2) indirmek yerine Cloudflare Workers ile istekleri edge'de karşılayıp KV'de önbelleğe almak istiyorum.

Cache invalidation'ı nasıl kurmalıyım ki origin'de fiyat değişince edge anında güncellensin?


Kısa cevap: Sadece TTL'e güvenmeyin — TTL eventual'dır ve süre dolana kadar **eski fiyatı** servis eder. Invalidation'ı push-based ve event-driven kurun.

Sizin senaryonuzda kabul edilemez olan şey "yanlış fiyat" penceresi. Çözüm, değişikliği edge'e beklemeye bırakmak değil, **itmek**:

1. **Değişiklikte write-through (veya purge) yapın.** Origin'de fiyat değiştiği anda, aynı transaction/outbox içinde Cloudflare API'ına çağrı atıp yeni değeri KV'ye yazın ya da key'i silin. Böylece güncelleme yazma işleminin parçası olur, ayrı bir "umarım çalışır" adımı değil.
2. **KV'yi kaynak değil, cache görün.** Doğruluk kaynağın origin DB'dir; KV onun hızlı bir kopyasıdır. Bu zihniyet, KV bozulduğunda/tutarsız kaldığında origin'den yeniden besleyebilmenizi sağlar.
3. **Key'i entity+version ile kurun.** Her değeri bir versiyonla damgalayın (`price:42:v7` gibi). Worker, eski versiyonu görürse **serve-stale-while-revalidate** yapıp arkada güncelleyebilir; kullanıcı beklemez, yanlış veriyi de uzun süre görmez.
4. **Kısa TTL'i emniyet ağı olarak bırakın.** Push invalidation bir sebeple kaçarsa, kısa TTL en kötü ihtimalle eskiliği birkaç saniyeyle sınırlar. TTL tek savunma değil, son savunma olsun.
5. **KV'nin global eventual consistency'sini kabul edin.** KV yazımları dünyaya yayılırken 60 saniyeye kadar sürebilir; küçük bir tutarsızlık penceresi kaçınılmaz. Anlık global doğruluk gerekiyorsa KV yanlış katmandır — o zaman origin'e gidin veya farklı bir tutarlılık modeli seçin.

**Sonuç:** Ben olsam **değişiklikte write-through (ya da purge) + kısa TTL emniyet ağı + versiyonlu key** üçlüsünü kurardım. TTL-only çözüm fiyat gibi para etkileyen veride yanlış; push-based invalidation ile origin değiştiği an edge güncellenir. KV'nin saniyelik yayılma penceresini bilerek tasarlayın — onu kaynak değil, hızlı ve tazelenebilir bir cache olarak kullanın.

## İlgili Yazılar

- [API sunucumu Cloudflare Tunnel arkasına alıp 443'ü internete kapatmalı mıyım?](https://www.muhammetsafak.com.tr/sor-bakalim/api-sunucusunu-cloudflare-tunnel-arkasina-mi-almali/) — Sor Bakalım
- [CI/CD'de OIDC ve IAM Role ile şifresiz (secretless) AWS erişimini nasıl kurarım?](https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-secret-yonetimi-ve-oidc-ile-sifresiz-erisim/) — Sor Bakalım
- [Docker imaj boyutunu multi-stage build ve distroless ile nasıl küçültürüm?](https://www.muhammetsafak.com.tr/sor-bakalim/docker-imaj-boyutunu-multi-stage-ve-distroless-ile-kucultmek/) — Sor Bakalım
