Questo è un punto importante se si utilizza MiniProfiler in produzione. Come se la prima visita ad una pagina fosse da parte di un utente in cui MiniProfiler è abilitato, tutte le richieste successive includeranno i risultati di MiniProfiler nel DOM (così come sono ora memorizzati nella cache). Non solo i risultati saranno errati (poiché considerano solo il primo caricamento), ma tutti i visitatori potranno vedere i risultati del tuo MiniProfiler.
In primo luogo, per consentire ciambella buco caching, sto facendo uso di:
http://mvcdonutcaching.codeplex.com/
Ciò consente di aggiungere le azioni che non verranno memorizzati nella cache quando si utilizza l'OutputCache.
Dato quanto sopra, è possibile rimuovere @using StackExchange.Profiling;
dalla pagina Layout. È quindi possibile sostituire:
@MiniProfiler.RenderIncludes()
Con:
@Html.Action("MiniProfiler", "DoNotCache", excludeFromParentCache: true)
ho creato un controller DoNotCache, così tutti i miei elementi non memorizzabili nella cache sono insieme, ma questo non è richiesto e si può mettere questa azione in qualsiasi controller
public ActionResult MiniProfiler()
{
return View();
}
E poi la vista stessa sembra proprio come:
@using StackExchange.Profiling;
@{
Layout = null;
}
@MiniProfiler.RenderIncludes()
Questo assicurerà i risultati MiniProfiler vengono visualizzati quando appropriato, e non venga la produzione anche in luoghi in cui si usa il DonutOutputCache
annotazione.
Ha importanza? Se la pagina proviene dalla cache di output, l'azione e il controller non vengono chiamati così profiler non mostrerebbero comunque niente, no? – Aliostad
Questo è davvero un buon punto per il lato server, ma MiniProfiler fornisce anche informazioni sul tempo di caricamento nel DOM ecc. Che sarebbe interessante. – larsw