ASP.NET Core MVC'de Önbellek Etiketi Yardımcısı

Yayımlayan Peter Kellner

Önbellek Etiketi Yardımcısı, içeriğini iç ASP.NET Core önbellek sağlayıcısına önbelleğe alarak ASP.NET Core uygulamanızın performansını geliştirme olanağı sağlar.

Etiket Yardımcıları'na genel bakış için, bkz. ASP.NET Core'da Etiket Yardımcıları.

Aşağıdaki Razor işaretleme geçerli tarihi önbelleğe alır:

<cache>@DateTime.Now</cache>

Etiket Yardımcısı'nı içeren sayfaya yapılan ilk istek geçerli tarihi görüntüler. Ek istekler, önbellek süresi dolana kadar (varsayılan 20 dakika) veya önbelleğe alınan tarih önbellekten çıkarılana kadar önbelleğe alınan değeri gösterir.

Önbellek Etiketi Yardımcı Öznitelikleri

enabled

Öznitelik Türü Örnekler Varsayılan
Boolean true, false true

enabled Önbellek Etiketi Yardımcısı tarafından kapatılan içeriğin önbelleğe alındığını belirler. Varsayılan değer: true. olarak ayarlanırsa false, işlenen çıkış önbelleğe alınmaz .

Örnek:

<cache enabled="true">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

expires-on

Öznitelik Türü Örnek
DateTimeOffset @new DateTime(2025,1,29,17,02,0)

expires-on önbelleğe alınan öğe için mutlak bir son kullanma tarihi ayarlar.

Aşağıdaki örnek, Önbellek Etiketi Yardımcısı'nın içeriğini 29 Ocak 2025'te saat 17:02'ye kadar önbelleğe alır:

<cache expires-on="@new DateTime(2025,1,29,17,02,0)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

expires-after

Öznitelik Türü Örnek Varsayılan
TimeSpan @TimeSpan.FromSeconds(120) 20 dakika

expires-after , içeriği önbelleğe almak için ilk istek zamanından itibaren süreyi ayarlar.

Örnek:

<cache expires-after="@TimeSpan.FromSeconds(120)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Razor Görünüm Altyapısı varsayılan expires-after değeri yirmi dakika olarak ayarlar.

expires-sliding

Öznitelik Türü Örnek
TimeSpan @TimeSpan.FromSeconds(60)

Değerine erişilmediyse önbellek girdisinin çıkarılacağı zamanı ayarlar.

Örnek:

<cache expires-sliding="@TimeSpan.FromSeconds(60)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

üst bilgiye göre değişiklik göster

Öznitelik Türü Örnekler
String User-Agent, User-Agent,content-encoding

vary-by-header , değiştirildiğinde önbellek yenilemesini tetikleyen üst bilgi değerlerinin virgülle ayrılmış listesini kabul eder.

Aşağıdaki örnek üst bilgi değerini User-Agentizler. Örnek, web sunucusuna sunulan her farklı User-Agent içerik için içeriği önbelleğe alır:

<cache vary-by-header="User-Agent">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

sorguya göre değişiklik

Öznitelik Türü Örnekler
String Make, Make,Model

vary-by-query listelenen herhangi bir anahtarın değeri değiştiğinde önbellek yenilemesini Keys tetikleyen sorgu dizesinde (Query) virgülle ayrılmış listesini kabul eder.

Aşağıdaki örnek ve Modeldeğerlerini Make izler. Örnek, her farklı Make içerik için içeriği önbelleğe alır ve Model web sunucusuna sunulur:

<cache vary-by-query="Make,Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

rotaya göre değişiklik göster

Öznitelik Türü Örnekler
String Make, Make,Model

vary-by-route rota verileri parametre değeri değiştiğinde önbellek yenilemesini tetikleyen yol parametresi adlarının virgülle ayrılmış listesini kabul eder.

Örnek:

Startup.cs:

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{Make?}/{Model?}");

Index.cshtml:

<cache vary-by-route="Make,Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Öznitelik Türü Örnekler
String .AspNetCore.Identity.Application, .AspNetCore.Identity.Application,HairColor

vary-by-cookie değerler değiştiğinde önbellek yenilemesini cookiecookie tetikleyen virgülle ayrılmış bir ad listesi kabul eder.

Aşağıdaki örnek, ASP.NET Core Identityile ilişkili öğesini cookie izler. Kullanıcının kimliği doğrulandığında, içindeki bir değişiklik önbellek yenilemesini Identitycookie tetikler:

<cache vary-by-cookie=".AspNetCore.Identity.Application">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

kullanıcıya göre değişiklik göster

Öznitelik Türü Örnekler Varsayılan
Boolean true, false true

vary-by-user oturum açmış kullanıcı (veya Bağlam Sorumlusu) değiştiğinde önbelleğin sıfırlanıp sıfırlanmayacağını belirtir. Geçerli kullanıcı, İstek Bağlam Sorumlusu olarak da bilinir ve öğesine başvurarak @User.Identity.Namebir Razor görünümde görüntülenebilir.

Aşağıdaki örnek, önbellek yenilemesini tetiklemek için geçerli oturum açmış kullanıcıyı izler:

<cache vary-by-user="true">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Bu özniteliğin kullanılması, önbellekteki içeriği bir oturum açma ve oturum kapatma döngüsü aracılığıyla korur. değeri olarak ayarlandığında true, kimlik doğrulama döngüsü kimliği doğrulanmış kullanıcının önbelleğini geçersiz kılır. Kullanıcının kimliği doğrulandığında yeni bir benzersiz cookie değer oluşturulduğundan önbellek geçersiz kılınır. Önbellek, mevcut olmadığında cookie veya cookie süresi dolduğunda anonim durum için korunur. Kullanıcının kimliği doğrulanmamışsa önbellek korunur.

vary-by

Öznitelik Türü Örnek
String @Model

vary-by önbelleğe alınan verilerin özelleştirilmesini sağlar. Özniteliğin dize değeri tarafından başvuruda bulunan nesne değiştiğinde, Önbellek Etiketi Yardımcısı'nın içeriği güncelleştirilir. Genellikle, model değerlerinin dize birleştirmesi bu özniteliğe atanır. Sonuç olarak, birleştirilmiş değerlerden herhangi birine yapılan bir güncelleştirmenin önbelleği geçersiz kıldığı bir senaryoya neden olur.

Aşağıdaki örnekte, görünümü görüntüleyen denetleyici yönteminin iki yol parametresinin myParam1 tamsayı değerini ve myParam2toplamını tek model özelliği olarak döndürdüğü varsayılır. Bu toplam değiştiğinde, Önbellek Etiketi Yardımcısı'nın içeriği yeniden işlenir ve önbelleğe alınır.

Eylem:

public IActionResult Index(string myParam1, string myParam2, string myParam3)
{
    int num1;
    int num2;
    int.TryParse(myParam1, out num1);
    int.TryParse(myParam2, out num2);
    return View(viewName, num1 + num2);
}

Index.cshtml:

<cache vary-by="@Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Öncelik

Öznitelik Türü Örnekler Varsayılan
CacheItemPriority High, Low, NeverRemove, Normal Normal

priority yerleşik önbellek sağlayıcısına önbellek çıkarma kılavuzu sağlar. Web sunucusu Low , bellek baskısı altındayken önce önbellek girdilerini çıkartır.

Örnek:

<cache priority="High">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

priority özniteliği belirli bir önbellek saklama düzeyini garanti etmez. CacheItemPriority yalnızca bir öneridir. Bu özniteliğin olarak NeverRemove ayarlanması, önbelleğe alınan öğelerin her zaman korunduğunu garanti etmez. Daha fazla bilgi için Ek Kaynaklar bölümündeki konulara bakın.

Önbellek Etiketi Yardımcısı, bellek önbelleği hizmetine bağlıdır. Önbellek Etiketi Yardımcısı, eklenmemişse hizmeti ekler.

Ek kaynaklar