Tag-bazlı invalidation
Cache entry’leri key bilmeden, tag üzerinden invalidate edilir. Bir spec birden çok varyant (sayfa, arama, sıralama) üretir; hepsi aynı tag altında toplandığı için tekRemoveByTagAsync(tag) çağrısı tümünü düşürür.
HybridCache tag invalidation’ı lazy uygular: L2’de (Redis) tag bir timestamp ile işaretlenir; bu tag’e ait varolan entry’ler bir sonraki erişimde geçersiz sayılır. Tek tek silme (scan + DEL) yapılmaz.
CacheTags sabitleri
Spec ile domain event handler’ın aynı string’i typo’suz paylaşması için tag’ler CacheTags sınıfında merkezîleştirilir (src/.../Application/SeedWork/Caching/CacheTags.cs). Tek kaynak, tek doğruluk:
Bagis/Etkinlik aggregate’leri için cache şu an yok (anlık değişiklik görünsün diye). Public liste ölçeklenince ilgili spec’lere
EnableCache + buraya tag eklenir.Domain event handler’da invalidation
Aggregate değiştiğinde domain event yayar; ilgili handler tag’i düşürür. FAQ örneği —InvalidateFaqCacheDomainEventHandler (src/.../Application/DomainEventHandlers/FaqCreated/):
faqs) tüm liste varyantlarını yakalar:
| Domain event | Handler dizini | Düşürülen tag |
|---|---|---|
FaqCreatedDomainEvent | DomainEventHandlers/FaqCreated/ | CacheTags.Faqs |
FaqUpdatedDomainEvent | DomainEventHandlers/FaqUpdated/ | CacheTags.Faqs |
FaqDeletedDomainEvent | DomainEventHandlers/FaqDeleted/ | CacheTags.Faqs |
FaqReorderedDomainEvent | DomainEventHandlers/FaqReordered/ | CacheTags.Faqs |
RemoveByTagAsync vs RemoveByTagLocallyAsync
HybridRequestCache (BuildingBlocks.Caching/HybridRequestCache.cs) iki metodu farklı amaçla taşır:
| Metod | Local L1/L2 | Broadcast | Kullanım |
|---|---|---|---|
RemoveByTagAsync | ✅ | ✅ (config açıksa) | Origin — değişikliği yapan node. Domain event handler’larda. |
RemoveByTagLocallyAsync | ✅ | ❌ | Receiver — broadcast’i alan diğer node’lar. Cascade/loop önleme. |
CacheInvalidationIntegrationEventHandler) RemoveByTagLocallyAsync kullanır; aksi halde her node aldığı broadcast’i tekrar yayınlar ve sonsuz cascade oluşur. Ayrıntı: Multi-Instance Senkron.
İlgili
Multi-Instance Senkron
Broadcast akışı ve echo guard.
Domain Events
Event yayını ve MediatR dispatch.
Hybrid Cache
Spec cache ve
IHybridRequestCache API.Cache Mimarisi
Genel bakış.