Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Caching Stratejisi: Neyi, Hangi Katmanda, Ne Kadar Süre Cache'lemeli?
Cache kararı ölçümle başlar: Bookstore'da kategori menüsü istek başına 2 sorgu ve 19,9 ms p95 ile tek gerçek adaydı, HybridCache ile p95 3,2 ms'ye ve 4.000 sorgu 0'a indi; ucuz ve kişiye özel sepet ise cache'lenmemeli. TTL veri tazelik gereksiniminden türetilir, her katmanın invalidation sahibi baştan belirlenir.
IMemoryCache Derinlemesine: SizeLimit, Eviction, Change Token ve GetOrCreate'in Gizli Stampede'i
SizeLimit dolu bir IMemoryCache'te limiti aşan entry hiç cache'lenmez: 100'lük cache'e eklenen 101. kitap reddedildi, arka plandaki compaction önce Low priority'leri, sonra en eski erişilenleri atıp cache'i 85'e indirdi. GetOrCreateAsync atomik değil; boş cache'e gelen 100 eşzamanlı istek factory'yi 100 kez çalıştırdı, şeritli SemaphoreSlim ve HybridCache bunu 1'e indirdi. Expiration timer'sız çalışır, grup invalidation change token ile kurulur.