L'OutputCache su MVC View User Control

Personalmente faccio parecchio uso dell'OutputCache, e lo ritengo uno dei migliori sistemi di caching (in ambienti non distribuiti) che si possano utilizzare: il vantaggio consiste nel fatto che viene messo in cache il markup già elaborato, tagliando di netto dall'applicazione tutta la parte di elaborazione dati necessaria alla creazione della pagina, o una sua porzione; in pratica è come avere un file statico in ram!

Nella maggior parte dei casi non è possibile utilizzare l'OutputCache sull'intera pagina web in quanto questa può contenere informazioni differenti da utente a utente, come delle porzioni di pagine visibili solo ad alcuni ruoli o la maschera di login nel caso l'utente non sia loggato;
è comunque sicuramente vantaggioso utilizzare l'outputcache su porzioni di pagine (usercontrol).
In ASP.NET MVC ho avuto problemi nell'adottare questa tecnica in quanto, per renderizzare lo usercontrol, utilizzavo il metodo RenderPartial, che ignora totalmente l'attributo OutputCache .
Da quanto invece apprendo dal blog di Phil Haack (maggiori info qui), risulta che è comunque possibile risolvere tale problema sostituendo l'utilizzo del RenderPartial ed andando a registrare il controllo, utilizzandolo così tramite il suo tag, come mostrato dal blocco di codice seguente:

<%@ Register Src="~/Views/Home/Partial.ascx" TagName="Partial" TagPrefix="imperugo" %>

<p>
    Metodo con Registrazione del tag
    <imperugo:Partial runat="server" />
</p>

In allegato trovate un progetto che mostra lo stesso MVC View User Control utilizzato con le due metodologie, e, al refresh della pagina, si potrà notare la differenza di comportamento.

Ciauz

Download Esempio qui


Comments