Nel precedente articolo abbiamo visto le caratteristiche base dei meccanismi di caching messi a disposizione da ASP.NET gia dalla versione 1.x; ora vediamo due delle nuove tecniche aggiunte nell'ultima versione: il "Partial Page Caching" e il "Post-Cache Substitution".
Partial page caching
Questa tecnica ci permette, in maniera abbastanza simile alla tecnica dell'output caching, di salvare in memoria singoli blocchi di una singola pagina web. Quelli che in realtà vengono salvati, sono i singoli User Controls (.ascx) presenti nella pagina, il che ci permette di agire in maniera differente (o parziale appunto) sulle informazioni da stampare all'utente.
Tutto questo sempre per cercare di migliorare le prestazioni delle pagine delle nostre applicazioni web.
Quello che bisogna fare è specificare il tempo di permanenza in cache, o nelle direttive dello user control, oppure tra gli attributi propri della dichiarazione della classe di code-behind.
Per provare questa nuova tecnica, ho creato 3 user control, tutti che stampano la data corrente, ma, mentre al primo non sono stati applicati meccanismi di caching, al secondo e al terzo sono state aggiunte le due nuove tecniche di partial caching appena descritte.
Vediamole in dettaglio:
CachedTime.aspx
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="CachedTime.ascx.cs" Inherits="CachedTime" %>
<%@ OutputCache Duration="3" VaryByParam="*" %>
<asp:Label ID="lblTime" runat="server"></asp:Label>
CachedTime.aspx.cx
public partial class CachedTime : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
lblTime.Text = DateTime.Now.ToString("T");
}
}
CodeCachedTime.aspx
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="CodeCachedTime.ascx.cs" Inherits="CodeCachedTime" %>
<asp:Label ID="lblTime" runat="server"></asp:Label>
CodeCahedTime.aspx.cs
[PartialCaching(6)]
public partial class CodeCachedTime : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
lblTime.Text = DateTime.Now.ToString("T");
}
}
Avviando in esecuzione una pagina con tutti e tre gli user control creati, e lavorando di F5 :), possiamo vedere i benefici che ci vengono messi a disposizione dal meccanismo del partial page caching di ASP.NET 2.0, e pensare alle potenzialità offerte per le nostre applicazioni web.
Post-Cache Substitution
Questa tecnica è stata aggiunta per ovviare a un problema delle pagine salvate in memoria, mediante la tecnica dell'output cache. Perché era veramente inutile avvalersi dell'output cache, senza poter mantenere nessuna parte dinamica all'interno della nostra pagina. Pensiamo, per esempio, il caso in cui volessimo mantenere in memoria unintera pagina, tranne una parte che stampa lora di accesso dellutente corrente.
Ora, anche questo inconveniente è stato risolto, attraverso l'inserimento del web control Substitution. Questo web control, permette di settare un metodo, con tipo di ritorno stringa, che non sarà affetto dall'output caching applicato allintera pagina.
Vediamo il codice:
Substitution.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Substitution.spx.cs" Inherits="SubstitutionPage" %>
Current time is: <asp:Substitution ID="substitute" runat="server" MethodName="UpdatedTime" />
Substitution.aspx.cs
public partial class SubstitutionPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e) {}
public static string UpdatedTime(HttpContext context)
{
return DateTime.Now.ToString("T");
}
}
Grazie a questa tecnica, possiamo quindi salvare in memoria l'otuput di un'intera pagina, mantenendo allo stesso tempo, delle zone dinamiche a nostro piacimento.
Nel prossimo articolo, continueremo a parlare di meccanismi di caching, introducendo l'ultimo argomento: "Cache Dependencies".
|
|
|