Condividi tramite


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

Aggiornamento: novembre 2007

In alcuni casi può essere necessario rimuovere una pagina dalla cache di output quando viene modificato un file. È ad esempio possibile che il contenuto di una pagina derivi da un report con un livello di elaborazione elevato che produce un file XML come output. La pagina deve essere rielaborata solo se il file XML viene modificato. Per limitare la rielaborazione ai soli casi in cui è strettamente necessaria, è possibile impostare i criteri della cache della pagina in modo che dipendano da un singolo file. Se necessario, è possibile fare in modo che la pagina memorizzata nella cache dipenda da più file.

Nota:

È possibile rimuovere in modo esplicito 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 memorizzata nella cache dipendente da un file

  1. Specificare le impostazioni per memorizzare nella cache l'output della pagina, 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 AddFileDependency. Come parametro filename del metodo passare il percorso del file utilizzato per creare una dipendenza.

    Nell'esempio di codice riportato di seguito viene impostata una dipendenza dal file TextFile1.txt. Quando il file viene modificato, l'output della pagina verrà rimosso dalla cache.

    protected void Page_Load(object sender, EventArgs e)
    {
        string fileDependencyPath = Server.MapPath("TextFile1.txt");
        Response.AddFileDependency(fileDependencyPath);
    
        // 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 EventArgs) Handles Me.Load
        Dim fileDependencyPath As String = _
            Server.MapPath("TextFile1.txt")
        Response.AddFileDependency(fileDependencyPath)
    
        ' 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 utilizzare questi metodi da un controllo utente ASP.NET. In qualsiasi controllo che specifichi la direttiva @ OutputCache è, tuttavia, possibile creare una dipendenza file e assegnarla alla proprietà Dependency.

Per rendere l'output di una pagina memorizzata nella cache dipendente da un gruppo di file

  1. Specificare le impostazioni per memorizzare nella cache l'output della pagina, 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 creare una matrice String o un ArrayList contenente i percorsi dei file dai quali deve dipendere la pagina.

  3. Chiamare il metodo AddFileDependencies e passare la matrice come parametro filenames.

    Nell'esempio di codice riportato di seguito viene creata una matrice di stringa dei percorsi dei file TextFile1.txt e XMLFile1.xml e l'output della pagina viene reso dipendente dai due file. Se uno dei due file viene modificato, l'output della pagina verrà rimosso dalla cache.

    protected void Page_Load(object sender, EventArgs e)
    {
        string[] fileDependencies;
        string fileDependency1 = Server.MapPath("TextFile1.txt");
        string fileDependency2 = Server.MapPath("XMLFile1.xml");
        fileDependencies = new String[] { fileDependency1, 
            fileDependency2 };
        Response.AddFileDependencies(fileDependencies);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim fileDependencies() As String
        Dim fileDependency1 As String = Server.MapPath("TextFile1.txt")
        Dim fileDependency2 As String = Server.MapPath("XMLFile1.xml")
        fileDependencies = New String() {fileDependency1, _
            fileDependency2}
        Response.AddFileDependencies(fileDependencies)
    End Sub
    

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