Condividi tramite


Aggiornamento dinamico di parti di una pagina memorizzata nella cache

Aggiornamento: novembre 2007

La memorizzazione di una pagina nella cache può aumentare drasticamente le prestazioni di un'applicazione Web. In alcuni casi è tuttavia necessario memorizzare nella cache la maggior parte della pagina mentre alcuni frammenti devono essere dinamici. Ad esempio, se si crea una pagina di articoli completamente statica per determinati periodi di tempo, è possibile impostare l'intera pagina come memorizzabile nella cache. Se però si desidera includere un banner pubblicitario a rotazione che cambia ad ogni richiesta di pagina, allora la parte della pagina contenente l'annuncio pubblicitario deve essere dinamica.

Al fine di memorizzare una pagina nella cache consentendo la sostituzione dinamica di parte del contenuto, è possibile utilizzare la sostituzione post-cache di ASP.NET per memorizzare l'intera pagina nella cache con parti specifiche contrassegnate come escluse dalla memorizzazione. Nell'esempio dei banner pubblicitari, il controllo AdRotator consente di utilizzare la sostituzione post-cache in modo che l'annuncio pubblicitario venga creato dinamicamente per ogni utente e ad ogni aggiornamento della pagina.

Sono disponibili tre modalità di implementazione della sostituzione post-cache:

  • La modalità dichiarativa, utilizzando il controllo Substitution.

  • A livello di codice, utilizzando l'API del controllo Substitution.

  • La modalità implicita, utilizzando il controllo AdRotator.

Controllo di sostituzione

Il controllo Substitution di ASP.NET specifica una parte di una pagina memorizzata nella cache che viene creata dinamicamente invece di essere memorizzata nella cache. Tale controllo deve essere inserito nel punto della pagina in cui si desidera visualizzare il contenuto dinamico.

In fase di esecuzione, il controllo Substitution chiama un metodo specificato con la proprietà MethodName. Il metodo restituisce una stringa che quindi sostituisce il contenuto del controllo Substitution. Il metodo deve essere statico nel controllo Page o UserControl che lo contiene.

Se si utilizza il controllo di sostituzione, viene eseguito l'inserimento nella cache del server e non del client, ossia la pagina non verrà memorizzata nella cache del client. In questo modo le future richieste della pagina devono chiamare di nuovo il metodo per generare il contenuto dinamico.

API di sostituzione

Per creare contenuto dinamico per una pagina memorizzata nella cache a livello di codice, è possibile chiamare il metodo WriteSubstitution nel codice della pagina, passando il nome di un metodo come parametro. Il metodo che gestisce la creazione del contenuto dinamico accetta un unico parametro HttpContext e restituisce una stringa. La stringa restituita è il contenuto che verrà sostituito nella posizione specificata. La chiamata al metodo WriteSubstitution offre rispetto all'utilizzo del controllo Substitution in modalità dichiarativa un vantaggio, ossia la possibilità di chiamare il metodo di qualsiasi oggetto arbitrario invece di chiamare un metodo statico dell'oggetto Page o UserControl.

Se si chiama il metodo WriteSubstitution, viene eseguito l'inserimento nella cache del server e non del client, ossia la pagina non verrà memorizzata nella cache del client. In questo modo le future richieste della pagina devono chiamare di nuovo il metodo per generare il contenuto dinamico.

Controllo AdRotator

Il controllo server AdRotator implementa il supporto per la sostituzione post-cache internamente. Se si inserisce un controllo AdRotator nella pagina, verrà eseguito il rendering di annunci pubblicitari univoci per ogni richiesta, indipendentemente dalla memorizzazione della pagina padre nella cache. Di conseguenza, una pagina che include un controllo AdRotator viene memorizzata solo nella cache del server.

Vedere anche

Concetti

Cenni preliminari sull'inserimento nella cache in ASP.NET

Memorizzazione nella cache di pagine ASP.NET

Memorizzazione nella cache di più versioni di una pagina

Memorizzazione nella cache di parti di una pagina ASP.NET

Memorizzazione nella cache dei dati dell'applicazione

Inserimento nella cache in ASP.NET con la classe SqlCacheDependency