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