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-Agent
izler. Ö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 Model
değ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>
vary-by-cookie
Ö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.Name
bir 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 myParam2
toplamı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
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin