Đây là điểm quan trọng nếu sử dụng MiniProfiler trong sản xuất. Như thể lượt truy cập đầu tiên vào một trang là bởi một người dùng mà MiniProfiler được kích hoạt, tất cả các yêu cầu tiếp theo sẽ bao gồm các kết quả của MiniProfiler trong DOM (vì chúng hiện đang được lưu trữ). Kết quả không chỉ không chính xác (vì chúng chỉ xem xét tải đầu tiên), nhưng tất cả khách truy cập sẽ có thể xem kết quả MiniProfiler của bạn.
Thứ nhất, để cho phép donut hole bộ nhớ đệm, tôi đang làm cho việc sử dụng:
http://mvcdonutcaching.codeplex.com/
này cho phép bạn thêm các hành vi đó sẽ không được lưu trữ khi sử dụng OutputCache.
Với phần trên, bạn có thể xóa @using StackExchange.Profiling;
khỏi trang Bố cục của mình. Sau đó bạn có thể thay thế:
@MiniProfiler.RenderIncludes()
Với:
@Html.Action("MiniProfiler", "DoNotCache", excludeFromParentCache: true)
Tôi đã tạo ra một bộ điều khiển DoNotCache, vì vậy tất cả các yếu tố non-cacheable của tôi ở bên nhau, nhưng điều này là không cần thiết và bạn có thể đặt hành động này trong bất kỳ bộ điều khiển nào.
public ActionResult MiniProfiler()
{
return View();
}
Và sau đó quan điểm riêng của mình chỉ trông giống như:
@using StackExchange.Profiling;
@{
Layout = null;
}
@MiniProfiler.RenderIncludes()
Điều này sẽ đảm bảo kết quả MiniProfiler được hiển thị khi cần thiết, và không được lưu trữ trong sản xuất thậm chí ở những nơi mà bạn sử dụng DonutOutputCache
chú thích.
Có quan trọng không? Nếu trang xuất phát từ bộ nhớ cache đầu ra thì hành động và bộ điều khiển không được gọi là profiler sẽ không hiển thị bất cứ điều gì, đúng không? – Aliostad
Đó là một điểm thực sự tốt cho phía máy chủ, nhưng MiniProfiler cũng xuất ra thông tin về thời gian tải trong DOM vv mà sẽ là thú vị. – larsw