di: Riccardo Di Nuzzo 04 Febbraio 2005
Con la definizione 'mettere in cache' una pagina web, si intende il salvataggio in uno spazio di memoria temporaneo del codice HTML della pagina.
Lo sviluppatore Asp.Net ha a disposizione un nuovo meccanismo di caching che permette di velocizzare la visualizzazione all'utente delle pagine web. Il concetto di base è che una volta fatta la prima richiesta, una copia della pagina viene conservata in uno spazio di memoria (chiamato appunto cache) in modo che le successive richieste della stessa pagina sono 'servite' dalla copia in cache senza bisogno di effettuare una nuova elaborazione e/o collegamento al db. Questa tecnica soprattutto in ambito web permette un notevole aumento delle prestazioni e un abbassamento del carico di lavoro con il database:

Naturalmente, possiamo impostare dei parametri che ci permettono di stabilire per quanto tempo la pagina deve rimanere in cache prima di essere rigenerata ad una nuova richiesta, oppure anche decidere di mettere in cache le pagine richieste in base a dei parametri (es. nomepagina.aspx?citta=rimini) cosi da leggere dalla cache le successive richieste con gli stessi parametri.
Vediamo in pratica quali possibilità abbiamo di utilizzare questa feature di Asp.Net. Di seguito, faremo uso di direttive da inserire nella pagina aspx. Una direttiva è scritta in cima al codice della pagina aspx, contiene normalmente uno o più attributi letti dal compilatore e ci permette di applicare alla pagina specifiche impostazioni.
Innanzitutto possiamo scegliere se usare una direttiva come questa:
<%@ OutputCache Duration="60" VaryByParam="None" %>
oppure gestire il caching in maniera programmatica dal codice:
C#
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
VB.Net
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Partiamo dalla direttiva OutputCache che inseriamo in cima alla pagina aspx insieme alle altre direttive esistenti. Nel seguente esempio faremo in modo che la pagina rimanga memorizzata in cache per 6 ore:
<%@ OutputCache Duration="21600" VaryByParam="None" %>
Duration=”21600” è la proprietà che imposta il tempo all'inizio del quale la nostra pagina verrà inserita in cache e finito il quale ad una nuova richiesta verrà rielaborata normalmente e rimessa in cache. L'unità di misura è in secondi.
L'altro parametro ci permette di scegliere il meccanismo di caching in base alle nostre necessità. Vediamo più in dettaglio alcune delle impostazioni utili.
VaryByParam
Questa impostazione ci permette di mettere in cache versioni diverse della nostra pagina a seconda dei parametri specificati (get o post). Questo è utile quando sviluppiamo una pagina aspx il cui contenuto varia a seconda delle scelte dell'utente, ad esempio quando l'utente sceglie di visualizzare tutti i clienti di una determinata città. In questo esempio vorremmo mettere in cache tutte le pagine richieste dall'utente in base alla città selezionata. Quindi l'impostazione giusta potrebbe essere:
<%@ OutputCache Duration="60"VaryByParam="Citta" %>
Se i nostri utenti chiedono di visualizzare nomepagina.aspx?Citta=Rimini e nomepagina.aspx?Citta=Milano verranno messe in cache due versioni diverse della pagina. Attenzione al caso in cui la vostra pagina accetti più di un parametro. In questo caso, se avete la necessità di memorizzare in cache una versione diversa della pagina richiesta per ogni combinazione di parametri allora è necessario specificare nell'attributo VaryByParam tutti i parametri. Altrimenti il sistema non farà differenza tra nomepagina.aspx?Citta=Rimini e nomepagina.aspx?Citta=Rimini&Tipo=Ristoranti. Per poter inserire più parametri potete utilizzare il punto e virgola per separarli:
<%@ OutputCache Duration="60" VaryByParam="Citta;Tipo" %>
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |