ASP.NET Core MVC 'de önbellek etiketi yardımcısı

By Peter Kellner

önbellek etiketi yardımcısı, içeriğini dahili ASP.NET Core önbellek sağlayıcısına önbelleğe alarak ASP.NET Core uygulamanızın performansını iyileştirebilme olanağı sağlar.

Etiket Yardımcıları hakkında genel bilgi için bkz ASP.NET Core etiket yardımcıları ..

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

<cache>@DateTime.Now</cache>

Etiket Yardımcısını içeren sayfanın ilk isteği geçerli tarihi görüntüler. Önbellek süresi dolana kadar veya önbelleğe alınmış tarih önbellekten çıkarılana kadar ek istekler önbelleğe alınmış değeri gösterir.

Önbellek etiketi yardımcı öznitelikleri

enabled

Öznitelik türü Örnekler Varsayılan
Boole true, false true

enabled Önbellek etiketi Yardımcısı tarafından eklenen içeriğin önbelleğe alınıp alınmayacağını belirler. Varsayılan değer: true. Olarak ayarlanırsa false , işlenen çıktı önbelleğe alınmaz .

Örnek:

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

süre sonu-açık

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

expires-on önbelleğe alınmış öğe için mutlak bir sona erme tarihi ayarlar.

Aşağıdaki örnek, 29 Ocak 2025 ' de 5:02 PM 'e kadar önbellek etiketi Yardımcısı 'nın içeriğini önbelleğe alır:

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

süre sonu-sonra

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

expires-after içeriği önbelleğe almak için ilk istek saatinden geçen sürenin uzunluğunu ayarlar.

Örnek:

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

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

süre sonu-kayan

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

Değerine erişilmediyse önbellek girişinin çıkarılme süresini ayarlar.

Örnek:

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

üst bilgiye göre değişiklik

Öznitelik türü Örnekler
Dize User-Agent, User-Agent,content-encoding

vary-by-header değişiklik yaparken önbellek yenilemeyi tetikleyen üst bilgi değerlerinin virgülle ayrılmış listesini kabul eder.

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

<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
Dize Make, Make,Model

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

Aşağıdaki örnek, ve değerlerini izler Make Model . Örnek, içeriği her farklı Make ve Web sunucusuna sunulan her bir için önbelleğe alır Model :

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

Yönlendirme ölçütü

Öznitelik türü Örnekler
Dize Make, Make,Model

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

Örnek:

Başlangıç. 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
Dize .AspNetCore.Identity.Application, .AspNetCore.Identity.Application,HairColor

vary-by-cookiecookiedeğerler değiştiğinde önbellek yenilemeyi tetikleyen adların virgülle ayrılmış bir listesini kabul eder cookie .

Aşağıdaki örnek cookie ile ilişkili ' i izler ASP.NET Core Identity . Bir kullanıcının kimliği doğrulandığında, içindeki bir değişiklik Identity cookie bir önbellek yenilemesi 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

Öznitelik türü Örnekler Varsayılan
Boole true, false true

vary-by-user oturum açan 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ı, Istek bağlamı sorumlusu olarak da bilinir ve Razor başvuru yaparak bir görünümde görüntülenebilir @User.Identity.Name .

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

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

Bu özniteliğin kullanılması, oturum açma ve oturum kapatma döngüsüyle önbellekteki içerikleri saklar. Değer olarak ayarlandığında true , bir kimlik doğrulama çevrimi kimliği doğrulanmış kullanıcı için önbelleği geçersiz kılar. cookieBir kullanıcının kimliği doğrulandığında yeni bir benzersiz değer oluşturulduğundan önbellek geçersiz kılındı. No yoksa cookie veya süresi dolduğunda önbellek, anonim durum için korunur cookie . Kullanıcının kimliği doğrulanmıyorsa , önbellek korunur.

değişiklik ölçütü-

Öznitelik türü Örnek
Dize @Model

vary-by önbelleğe alınan verilerin özelleştirilmesine izin verir. Özniteliğin dize değeri tarafından başvurulan 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. Etkin olarak, bu, herhangi bir birleştirilmiş değerden bir güncelleştirmenin önbelleği geçersiz hale getirildiği bir senaryoya neden olur.

Aşağıdaki örnek, görünümü işleyen denetleyici yönteminin, iki yol parametrelerinin tamsayı değerini toplamasını ve ve myParam1 myParam2 toplamı tek model özelliği olarak döndürdüğünü varsayar. Bu toplam değiştiğinde, önbellek etiketi Yardımcısı 'nın içeriği işlenir ve yeniden ö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>

Priority

Ö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ında olduğunda ön belleği önbelleğe alabilir.

Ö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 ayarlanması NeverRemove , önbelleğe alınmış öğelerin her zaman korunmamasını garanti etmez. Daha fazla bilgi için ek kaynaklar bölümündeki konulara bakın.

Önbellek etiketi Yardımcısı, bellek önbelleği hizmetinebağımlıdır. Önbellek etiketi Yardımcısı eklenmemişse hizmeti ekler.

Ek kaynaklar