Cache Tag Helpers – ASP.NET – MVC

Cache Tag Helper, bir Razor sayfasının bölgelerini sunucudaki bellekte önbelleğe almanızı sağlar. Bu yardımcının tipik kullanımları, nispeten pahalı veritabanı veya web hizmeti çağrıları gerektiren, ancak içeriğin çok sık değişmediği View Bileşenleri veya Partial View’ler içindir. Bu tür caching (önbelleğe alma), öncelikle bir web sitesinin performansını iyileştirmek için kullanılır.

Diğer birçok Tag Helper’ın aksine, Cache Tag Helper standart bir HTML elementini hedeflemez. Tarayıcıya işlenmeyen ve HTML kaynağında da görünmeyen <cache> etiketini hedefler.

Default Caching (Önbelleğe alınmış varsayılan) tarih saati, Razor motoru tarafından yirmi dakika olarak ayarlanmıştır. Bu özelliği ve diğer bir kaç özelliği aşağıda listelenmiştir.

Cache Tag Helper Attribute (Özellikleri)

AttributeAçıklama
enabled İçindeki içeriğin önbelleğe alınıp alınmayacağına karar verir. Varsayılan değer doğrudur.
expires-onÖnbelleğe alınan veriler için mutlak sona erme tarihini ayarlamak için kullanılır.
expires-afterİlk istekten önbelleğe alınan içeriğe kadar geçen süreyi ayarlar.
expires-slidingÖnbelleğe alınan varlığın zaman aralığını ayarlar, böylece o zamandan sonra bu varlığa erişilmezse silinebilir.
priorityÖnbelleğe alınan öğenin CacheItemPriority değerini belirtir
vary-byAynı içeriğin farklı sürümlerinin önbelleğe alınması gerekip gerekmediğini belirleyen parametreleri belirtmek için kullanılır.

Enabled – Cache Tag Helper Kullanımı

Cache Tag Helper varsayılan olarak etkindir. Belirli koşullar altında koşullu olarak devre dışı bırakmak isteyebilirsiniz. Enabled özniteliği bunu kolaylaştırır.

<cache enabled="DateTime.Now.DayOfWeek != DayOfWeek.Sunday">@DateTime.Now</cache>

Expires-* – Cache Tag Helper Kullanımı

Expires-* özelliklerinden herhangi biri için değer sağlamazsanız, öğeniz son kullanma tarihi olmadan önbelleğe alınır, yani yalnızca bellek deposu temizlendiğinde sona erer. Expires-after özelliği, öğenin cache’de saklanması gereken süreyi temsil eden bir TimeSpan değeri alır.

<cache expires-after="TimeSpan.FromHours(1)">@DateTimeNow</cache>

Expires-on özelliği, bir öğenin mutlak sona erme zamanını belirten bir DateTimeOffset değeri alır.

<cache expires-on="new DateTimeOffset(new DateTime(2017, 6, 14, 8, 15, 0))">@DateTime.Now</cache>

Bir öğe, belirli bir işlem yapılmama süresinden sonra sona erecek şekilde ayarlanabilir. Expires-sliding özelliği bir TimeSpan değeri alır. Bu örnekte öğe, sayfanın son istenmesinden 20 dakika sonra sona erecek şekilde ayarlanmıştır:

<cache expires-sliding="TimeSpan.FromMinutes(20)">@DateTime.Now</cache>

Priority – Cache Tag Helper Kullanımı

Önbellekteki öğeler, bellek baskısı öğelerin önceden belirlenmiş son kullanma sürelerinden önce önbellekten silinmesine neden olduğunda bu öğelerle nasıl başa çıkılacağını belirleyen bir önceliğe sahip olabilir. Priority özelliği, önbellekteki öğelerin önceliğini belirten bir CacheItemPriority enum değeri alır. Mevcut değerler.

  • High
  • Low
  • Normal
  • NeverRemove

High (Yüksek önceliğe) sahip öğeler en son kaldırılacak olanlardır. NeverRemove olarak ayarlanan öğeler önbellekte kalır. Önbelleği işleyebileceğinden daha fazla veriyle doldurma tehlikesi olduğundan, NeverRemove’u uygularken dikkatli olmalısınız. Yüksek önceliğe sahip bir öğeyi şu şekilde ayarlayabilirsiniz:

<cache priority="CacheItemPriority.High">@DateTime.Now</cache>

Vary-by – Cache Tag Helper Kullanımı

Aynı içeriğin birden çok sürümünü farklı ölçütlere göre önbelleğe alabilirsiniz. Vary-by özeliği, mevcut önbelleğe alınmış içeriğin başka bir sürümünün depolanıp depolanmayacağını belirlemek için kullanılacak ölçütleri belirtmeniz için bir mekanizma sağlar.

Bu özelliğimizin 5 farklı tipi bulunmaktadır.

Cookie

Farklı içerik sürümleri önbelleğe alınırken cookie değerleri dikkate alınabilir. vary-by-cookie seçeneği, tanımlama bilgilerinin adlarını temsil eden virgülle ayrılmış bir dize alır:

<cache vary-by-cookie="AppCookie1, AppCookie2">@DateTime.Now</cache>

Header

Farklı request header değerlerine dayalı olarak içeriğin birden çok sürümünü depolayabilirsiniz. Bu örnek, kullanıcının tercih ettiği dile göre önbelleğe alınan içeriğin farklı sürümlerini depolar:

<cache vary-by-header="Accept-Language">@DateTime.Now</cache>

Query

vary-by-query  farklı sürümleri önbelleğe almak için query string parametrelerinin kullanılmasını sağlar.

<cache vary-by-query="id">@DateTime.Now</cache>

Route

vary-by-route seçeneğini kullanarak route veri parametrelerinin dikkate alınmasını sağlayabilirsiniz.

<cache vary-by-route="key1, key2">@DateTime.Now</cache>

User

Her kullanıcının kendi önbelleğe alınmış içerik sürümünü almasını belirtmenize olanak tanır. vary-by-user, true olarak ayarlanması gereken bir bool gerektirir:

<cache vary-by-user="true">@DateTime.Now</cache>

String

Son olarak, önceden ayarlanmış seçeneklerden biri tarafından gösterilmeyen bir değer kullanmak istiyorsanız, parametre olarak rasgele bir string değeri sağlayabilirsiniz:

<cache vary-by="@Model.Id">@DateTime.Now</cache>