Önbellek İlkeleri ve Geçersiz Kılma
Önbellek ömrünü ve etiketlerini denetleyin.
Önbellek İlkeleri ve Geçersiz Kılma, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Adlandırılmış İlkeler
Önbellek ayarlarını her uç noktada tekrarlamak yerine, yeniden kullanılabilir adlandırılmış ilkeleri bir kez tanımlayın ve bunlara adlarıyla başvurun.
builder.Services.AddOutputCache(options =>
{
options.AddPolicy("Short", policy =>
policy.Expire(TimeSpan.FromSeconds(10)));
options.AddPolicy("Long", policy =>
policy.Expire(TimeSpan.FromMinutes(10)));
});Adlandırılmış Bir İlkeyi Uygulama
Bir uç noktayı önbelleğe alırken ilkeye adıyla başvurun.
app.MapGet("/catalog", GetCatalog)
.CacheOutput("Long");Önbellek Etiketleri
Etiketler, ilişkili önbellek girdilerini gruplandırarak bunları birlikte geçersiz kılmanızı sağlar. İlkenizde bir uç noktayı Tag ile etiketleyin.
app.MapGet("/products", GetProducts)
.CacheOutput(policy => policy
.Expire(TimeSpan.FromMinutes(5))
.Tag("products"));IOutputCacheStore Arayüzü
Geçersiz kılma işlemi IOutputCacheStore üzerinden gerçekleştirilir. Bunu bağımlılık olarak ekleyin ve etiket taşıyan tüm girdileri temizlemek için EvictByTagAsync çağrısını yapın.
app.MapPost("/products", async (
Product p, AppDb db, IOutputCacheStore cache, CancellationToken ct) =>
{
db.Products.Add(p);
await db.SaveChangesAsync(ct);
await cache.EvictByTagAsync("products", ct);
return Results.Created($"/products/{p.Id}", p);
});Yazma İşlemlerinde Neden Geçersiz Kılmalı
Temel veriler değiştiği anda önbelleğe alınmış bir liste güncelliğini yitirir. Her oluşturma, güncelleme veya silme işleminde ilgili etiketi önbellekten çıkarmak, sona erme süresini beklemeden okumaların güncel kalmasını sağlar.
// After any mutation:
await cache.EvictByTagAsync("products", ct);Kaynağa Göre Etiketleme
Tüm koleksiyonu değil, yalnızca tek bir öğenin önbelleğe alınmış yanıtlarını çıkarmak için daha ayrıntılı düzeyde etiketleme yapın.
app.MapGet("/products/{id}", GetProduct)
.CacheOutput(policy => policy.Tag("products"));
// Evict the single item's detail + the list together
await cache.EvictByTagAsync("products", ct);Bir İlkede Değişkenlik
Tam bir önbelleğe alma sözleşmesi oluşturmak için sona erme süresini, etiketleri ve değişkenlik kurallarını tek bir adlandırılmış ilkede birleştirin.
options.AddPolicy("ProductList", policy => policy
.Expire(TimeSpan.FromMinutes(5))
.Tag("products")
.SetVaryByQuery("page", "size"));Özel Değişkenlik Değeri
VaryByValue, istekten çözümlenen kiracı kimliği gibi rastgele istek verilerini kullanarak önbellek anahtarını belirlemenizi sağlar.
policy.VaryByValue(context =>
new KeyValuePair<string, string>(
"tenant",
context.Request.Headers["X-Tenant"].ToString()));Önbellekten Çıkarma ve Sona Erme
Girdilerin önbellekten çıkmasının iki yolu vardır:
- Sona erme: zamana bağlıdır ve
Expirearacılığıyla otomatik gerçekleşir. - Önbellekten çıkarma: veriler değiştiğinde
EvictByTagAsyncaracılığıyla açıkça gerçekleştirilir.
İkisini birlikte kullanın: güvenlik ağı olarak kısa bir sona erme süresi, doğruluk için önbellekten çıkarma.
// belt-and-suspenders: Expire(5min) + EvictByTag on writeKilit ve İstek Çığı Koruması
Çıktı önbelleğe alma, varsayılan olarak eşzamanlı önbellek kaçırmalarını birleştirir: çok sayıda istek aynı anda önbelleğe alınmamış bir uç noktaya ulaştığında yalnızca biri handler çalıştırır, diğerleri bekler. SetLocking(false) ile bu davranışı devre dışı bırakabilirsiniz.
policy.SetLocking(false); // allow concurrent regenerationDağıtık Çıktı Önbelleği
Varsayılan olarak depo bellek içidir ve her örneğe özeldir. Birden çok sunucu için depoyu dağıtık bir depoyla (ör. Redis) destekleyin; böylece tüm örnekler aynı önbelleği paylaşır ve geçersiz kılar.
// Register a distributed IOutputCacheStore implementation
// (e.g. a Redis-backed package) so EvictByTag works cluster-wideHızlı Kontrol
Geçersiz kılma konusundaki anlayışınızı test edin.
Özet
Önbellek ilkelerini ve geçersiz kılmayı öğrendiniz:
- Yeniden kullanılabilir adlandırılmış ilkeler tanımlayın ve bunları adlarıyla uygulayın.
- Etiketler girdileri gruplandırır;
IOutputCacheStore.EvictByTagAsync, yazma işlemlerinde bu girdileri temizler. - Sona ermeyi (otomatik) önbellekten çıkarmayla (açıkça) birleştirin.
- Birden çok sunuculu dağıtımlar için dağıtık bir depo kullanın.
Hız sınırlama ve önbelleğe alma kursu tamamlandı.
Yapay zeka eğitmeniyle C# öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 93
- Dersler
- 346
Sıkça Sorulan Sorular
“Önbellek İlkeleri ve Geçersiz Kılma” dersi ücretsiz mi?
Evet — “Önbellek İlkeleri ve Geçersiz Kılma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Önbellek İlkeleri ve Geçersiz Kılma” dersinde ne öğreneceğim?
Önbellek ömrünü ve etiketlerini denetleyin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Önbellek İlkeleri ve Geçersiz Kılma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Hız Sınırlama Algoritmaları
- Hız Sınırlama Ara Yazılımını Yapılandırma
- Çıktı Önbellekleme Temelleri
- Önbellek İlkeleri ve Geçersiz Kılma