In questo post conosceremo il Cache TagHelper, questo TagHelper si occupa di inserire del codice nella cache (MemoryCache) per un periodo di tempo.

image

Il Cache TagHelper mette a disposizione i seguenti attributi:

  • enabled
  • expires-after
  • expires-on
  • expires-sliding
  • priority
  • vary-by
  • vary-by-cookie
  • vary-by-header
  • vary-by-query
  • vary-by-route
  • vary-by-user

    Attributo enabled

    L’attributo enabled è un booleano che serve per attivare o disattivare la cache.

    Attributo expires-after

    L’attributo expires-after serve ad indicare dopo quanto tempo la Cache verrà liberata dalla memoria:

    <cache enabled="true" expires-after="@TimeSpan.FromSeconds(10)">
      1  @DateTime.Now
    </cache>
      

    Attributo expires-on

    L’attributo expires-on serve ad indicare il momento in cui la Cache verrà liberata dalla memoria.

    <cache enabled="true" expires-on="@DateTime.Today.AddSeconds(20)">
      2  @DateTime.Now
    </cache>
    

    Attributo expires-sliding

    L’attributo expires-sliding serve ad indicare che la Cache verrà liberata dalla memoria se non viene acceduta dal tempo indicato.

    <cache enabled="true"  expires-sliding="@TimeSpan.FromMinutes(1)">
        3  @DateTime.Now
    </cache>
      

    Attributo proprity

    L’attributo priority serve ad indicare che la priorità con cui  il sistema gestirà la Cache:

    Nel caso in cui il sistema abbia bisogno di liberare memoria, incomincerà a liberare gli elementi presenti nella cache con priorità più bassa.

    I Livelli di priorità previsti sono:

    • Low
    • Normal
    • High
    • NeverRemove
    <cache enabled="true" expires-after="@TimeSpan.FromMinutes(10)" priority="@CacheItemPriority.High">
      1  @DateTime.Now
    </cache>
      
    Attributo vary-by
    L’attributo vary-by serve ad indicare il campo in base al quale verranno mantenuti in cache contenuti differenti.
    <cache enabled="true"  vary-by="@ViewBag.ProductId">
        3  @DateTime.Now
    </cache>
      
    Attributo vary-cookie
    L’attributo vary-cookie permette inserire nella cache contenuti differenti in base al valore di uno o più specifichi cookies:
    <cache enabled="true"  vary-by-cookie="cookieName">
        3  @DateTime.Now
    </cache>
      
    Attributo vary-header
    L’attributo vary-header permette inserire nella cache contenuti differenti in base al valore presente nell’header della request:
    <cache enabled="true" vary-by-header="User-Agent">
        3  @DateTime.Now
    </cache>
      
    Attributo vary-query
    L’attributo vary-query permette inserire nella cache contenuti differenti in base al valore presente nei parametri passati come querystring:
    <cache enabled="true" vary-by-query="search">
        3  @DateTime.Now
    </cache>
    
      
    Attributo vary-route
    L’attributo vary-route permette inserire nella cache contenuti differenti in base al valore presente nella route utilizzata:
    <cache enabled="true" vary-by-route="id">
        3  @DateTime.Now
    </cache>
    
      
    Attributo vary-user
    L’attributo vary-user permette inserire nella cache contenuti differenti in base all’utente loggato:
    <cache enabled="true" vary-by-user="true">
        3  @DateTime.Now
    </cache>
      

    Per chi volesse approfondire e/o visualizzare il codice sorgente del TagHelper, può andare direttamente sul repository su GitHub a questo indirizzo:

    https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.TagHelpers/CacheTagHelper.cs

    Happy Coding Winking smile