Condividi tramite


Procedura: memorizzare nella cache l'output di pagine con dipendenze di chiavi di cache

Aggiornamento: novembre 2007

In alcune situazioni può essere necessario rimuovere una pagina dalla cache di output mentre viene rimosso un altro elemento. È possibile, ad esempio, che in una pagina sia visualizzato un report con un livello di elaborazione elevato, inserito nella cache dell'applicazione e utilizzato da più pagine. Quando il report viene modificato o rimosso dalla cache e perde quindi la sua validità, si desidera che anche l'output della pagina venga rimosso dalla cache. Per eseguire questa operazione, è possibile rendere l'output della pagina memorizzato nella cache dipendente da altri elementi a loro volta memorizzati nella cache.

Nota:

È possibile rimuovere esplicitamente qualsiasi pagina dalla cache di output chiamando il metodo RemoveOutputCacheItem. Tale chiamata può essere effettuata dal file Global.asax, da un controllo server ASP.NET personalizzato o da una pagina, a seconda dei requisiti dell'applicazione.

Per rendere l'output di una pagina memorizzato nella cache dipendente da un altro elemento della cache

  1. All'interno di una pagina specificare le impostazioni della cache in modo dichiarativo o a livello di codice. Per ulteriori informazioni, vedere Procedura: impostare valori di scadenza per l'inserimento di pagine ASP.NET nella cache, Impostazione del valore di memorizzazione nella cache di una pagina e Memorizzazione nella cache di più versioni di una pagina.

  2. Nel codice della pagina chiamare il metodo AddCacheItemDependency. Come parametro cacheKey, passare il nome dell'elemento della cache su cui creare una dipendenza.

    Nell'esempio di codice riportato di seguito viene illustrato come impostare una dipendenza sull'elemento denominato ProcessIntensiveReport. Quando l'elemento viene modificato o rimosso, anche l'output della pagina verrà rimosso dalla cache.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.AddCacheItemDependency("ProcessIntensiveReport");
    
        // Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(true);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.AddCacheItemDependency("ProcessIntensiveReport")
    
        ' Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
    End Sub
    
    Nota:

    Non è possibile chiamare il metodo AddCacheItemDependency in un controllo utente ASP.NET. Tuttavia, in qualsiasi controllo utente in cui sia specificata la direttiva @ OutputCache, è possibile creare un oggetto CacheDependency che descriva la dipendenza delle chiavi di cache e la assegni alla proprietà Dependency dell'oggetto UserControl.

Vedere anche

Attività

Procedura: impostare il valore di memorizzazione nella cache di una pagina a livello di codice

Concetti

Memorizzazione nella cache di pagine ASP.NET

Impostazione del valore di memorizzazione nella cache di una pagina