ASP.NET consente di scegliere tra tre possibili opzioni per memorizzare i dati di sessione, ovvero quei dati specifici di ciascuna sessione utente.
La prima possibilità , quella di default, consiste semplicemente nel mantenere i dati di sessione in memoria nello stesso processo dell'applicazione ASP.NET. La seconda consente di tenere i dati di sessione sempre in memoria ma nella memoria di una macchina server dedicata (quindi solitamente una macchina diversa da quella che ospita l'applicazione). La terza possibilità consiste nella memorizzazione dei dati di sessione su database SQL Server. In particolare in questi ultimi due casi i dati di sessione essendo ospitati fuori dal worker process dell'applicazione devono necessariamente essere serializzati. Quando cià avviene la loro dimensione aumenta proprio a causa della serializzazione e questo potrebbe costituire un problema in presenza di molte informazioni da mantenere.
Per questo motivo, ASP.NET 4.0 fornisce una nuova opzione di configurazione per le due modalità di memorizzazione dei dati di sessione che richiedono la serializzazione. Questa opzione si chiama compressionEnabled ed è un attributo dell'elemento sessionState presente nel web.config per configurare il provider che gestisce la sessione. Quando impostiamo a true questo attributo, ASP.NET dopo la serializzazione dei dati, prima di passarli in memoria o su SQL Server li comprime utilizzando la classe GZipStream. Ovviamente in senso contrario farà anche la decompressione quando i dati dovranno essere deserializzati.
<sessionState mode="SqlServer" sqlConnectionString="..." compressionEnabled="true" />