Dies ist ein wichtiger Punkt bei der Verwendung von MiniProfiler in der Produktion. Als ob der erste Besuch einer Seite von einem Benutzer erfolgt, bei dem MiniProfiler aktiviert ist, enthalten alle nachfolgenden Anfragen die MiniProfiler-Ergebnisse im DOM (wie sie jetzt zwischengespeichert sind). Die Ergebnisse sind nicht nur falsch (da sie nur die erste Ladung berücksichtigen), sondern alle Besucher können Ihre MiniProfiler-Ergebnisse sehen.
Zum einem Donut-Loch-Caching zu aktivieren, ich mache Gebrauch von:
http://mvcdonutcaching.codeplex.com/
Auf diese Weise können Sie Aktionen hinzufügen, die nicht im Cache gespeichert werden, wenn der Output verwenden.
Angesichts der oben genannten können Sie @using StackExchange.Profiling;
von Ihrem Layout entfernen. Sie können dann ersetzen:
@MiniProfiler.RenderIncludes()
mit:
@Html.Action("MiniProfiler", "DoNotCache", excludeFromParentCache: true)
Ich habe eine DoNotCache Controller erstellt, so dass alle meine nicht cachespeicherbare Elemente zusammen sind, aber dies ist nicht erforderlich, und Sie können diese Handlung in jeder Controller.
public ActionResult MiniProfiler()
{
return View();
}
Und dann der Blick selbst sieht aus wie:
@using StackExchange.Profiling;
@{
Layout = null;
}
@MiniProfiler.RenderIncludes()
Dadurch wird sichergestellt, werden die Miniprofiler Ergebnisse angezeigt, wenn angemessen, und nicht an Stellen in der Produktion noch im Cache gespeichert, wo Sie die DonutOutputCache
Anmerkung verwenden.
Spielt es eine Rolle? Wenn die Seite aus dem Ausgabe-Cache kommt, dann würde die Aktion und der Controller, der so nicht als Profiler bezeichnet wird, sowieso nichts anzeigen, nein? – Aliostad
Das ist ein wirklich guter Punkt für die Serverseite, aber MiniProfiler gibt auch Informationen über die Ladezeit im DOM usw. aus, die interessant wären. – larsw