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)
Attribute | Açı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-by | Aynı 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>