Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Meccanismi di caching, parte 1 - Output caching

Meccanismi di caching, parte 1 - Output caching
Data: 05/04/2006
Categoria: ASP.NET 2.0

In tutte le versioni di ASP.NET, sia 1.x che 2.0, sono stati pensati ed inseriti nellarchitettura, dei meccanismi di caching, utili a migliorare le performance delle nostre applicazioni web. Queste sono le tre tecniche messe a disposizione:
  • output caching
  • partial page caching
  • data caching
La prima era gia presente dalla versione 1.0 di ASP.NET, le altre invece sono state aggiunte con luscita del .NET Framework 2.0 e di Visual Studio .NET 2005.
Questo è il primo di una serie di tre articoli, posti a spiegare i meccanismi di caching presenti e a vederne esempi duso.

Output caching

E la tecnica che permette di inserire nella cache del server, unintera risposta http (una pagina web quindi) e renderla disponibile per successive richieste; infatti, dopo che una pagina è stata inserita in cache, può essere richiamata ad ogni susseguente richiesta della medesima risorsa, senza che questa venga ricaricata.
Per applicare questa tecnica allinterno di una pagina ASP.NET, bisogna inserire la direttiva OutputCache, immediatamente dopo la direttiva Page:

<%@ OutputCache Duration="20" VaryByParam="None" %>

Questa direttiva ha due attributi: Duration, indica il numero di secondi per cui la pagina rimane in memoria, VaryByParam, invece, permette di specificare quale parametro di QueryString definisce una versione differente della pagina da mantenere in memoria; se questo attributo ha valore None, significa che il server deve mantenere in cache solo un'unica versione della pagina richiesta.
Se invece, specifichiamo precisi parametri di querystring, ASP.NET sa che deve mantenere versioni della pagina per ogni differente valore dei parametri specificati.

<%@ OutputCache Duration="20" VaryByParam="idpost;idauthor" %>

quindi, in memoria ci saranno tante versioni della pagina per quanti differenti valori sono stati assegnati ai parametri idpost ed idauthor. Chiaramente le pagine salvate in cache saranno solo quelle richieste dal client.
Se invece abbiamo la necessità di mantenere in cache una nuova versione della pagina, per ogni nuovo parametro di querystring che viene utilizzato, basta specificarlo attraverso luso di una wildcard:

<%@ OutputCache Duration="20" VaryByParam="*" %>

Esistono ancora altri tre attributi utili per personalizzare al massimo la tecnica dellOutput caching:
  • VarByHeader - Ci da la possibilità di mantenere in cache versioni di pagine differenti in base al valore di un particolare attributo della richiesta HTTP (come ad esempio lo User-Agent).
  • VarByControl - Specificando lID di un web control utilizzato in una nostra pagina, possiamo salvare le diverse visualizzazioni della stessa date dai valori assegnati da quel medesimo controllo (ad esempio, il valore selezionato di una DropDownList).
  • VayByCustom - Attributo che permette linserimento di uno o più parametri utili a specificare un livello personalizzato di caching dei dati. Si potrebbe quindi mantenere in cache ogni pagina per ogni richiesta con cookie differente, oppure per ogni utente che si autentica alla nostra applicazione web.
Come abbiamo potuto vedere, la tecnica dellOutput Caching, ci permette di attuare diverse politiche di salvataggio dei dati in memoria, arrivando anche ad un livello di personalizzazione abbastanza avanzato.
Nei prossimi articoli, vedremo invece le nuove funzionalità aggiunte in ASP.NET 2.0 per quanto riguarda la gestione della cache.