2009-07-17 38 views
8

Trên ứng dụng của tôi, sau khi bật ASP.NET Tracing trong ứng dụng ASP.NET MVC, thống kê tính toán thời gian bị tắt theo hệ số 5000.Làm thế nào tôi có thể tạo một trace.axd hoàn chỉnh trong ASP.NET MVC?

Tôi có một trang tải từ 7 đến 9 giây. Điều này được chứng thực bởi cả Firebug và trường "time-taken" trong các tệp nhật ký IIS. (Đây chỉ là trang trả lại cho khách hàng, không phải bất kỳ bố cục, DOM hoặc thực thi tập lệnh nào.)

Tuy nhiên, khi tôi bật tính năng theo dõi ứng dụng trên (thông qua web.config) và xem đầu ra theo dõi, thời gian được lấy từ "Begin PreInit" thành "End Render" chỉ chưa đến 0,001 giây.

Tôi cho rằng điều này là do Trace.axd được xây dựng với WebForms trong đầu, và MVC bỏ qua vòng đời trang truyền thống.

Tuy nhiên, ngay cả khi tôi thêm dấu vết tùy chỉnh ở đầu và cuối của OnActionExecuting/OnActionExecuted, thời gian vẫn chưa đến 0,1 giây.

Có ai biết nơi nào trong ASP.NET MVC tôi sẽ cần phải móc để có báo cáo đầu ra trace.axd chính xác thời gian thực hiện?

Trả lời

7

Có thể là thời gian cho chính phương thức hành động không phải là phần lớn trong quá trình thực hiện. Hãy thử kiểm tra thời gian giữa OnResultExecuting/OnResultExecuted. Đây là cơ bản thời gian để thực sự làm cho trang trong HTML trong khi OnActionExecuting/OnActionExecuted là (về cơ bản) thời gian để thiết lập dữ liệu cho khung nhìn.

Lưu ý rằng nếu bạn đang sử dụng LINQ, các truy vấn dữ liệu có thể được trì hoãn cho đến khi trang được hiển thị (mô hình liệt kê). Đó là, sự chậm chạp có thể không do độ phức tạp của trang nhưng truy cập dữ liệu ngay cả khi thời gian được thực hiện trong khi thực hiện kết quả.

+1

+1 điểm tốt về tải chậm – RedFilter

+0

Yup, OnResultĐược thực hiện cho thấy thời gian trễ là 9 giây. Bây giờ để tìm ra lý do tại sao ... (Tôi luôn luôn .ToList() Linq của tôi trước khi gán nó vào mô hình, do đó, nó không phải hoãn thi hành. Tôi nghĩ rằng các trang Master lồng nhau crappy của tôi có thể là thủ phạm.) – Portman

Các vấn đề liên quan