Global.asax.cs에 빈 Session_Start 처리기를 만들면 브라우저에 페이지를 렌더링 할 때 상당한 영향을줍니다. Global.asax.cs의 Session_Start가 성능 문제를 일으키는 이유는 무엇입니까?
재현하는 방법 :빈 ASP.NET MVC 3 웹 응용 프로그램을 (내가 MVC 3 RC2를 사용하고 있습니다)를 만듭니다. 다음이 코드를 홈 컨트롤러를 추가 :
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Number(int id)
{
return Content(id.ToString());
}
}
다음 뷰 홈/Index.cshtml를 만들고 본문 섹션에 다음과 같은 장소 :
@for (int n = 0; n < 20; n++)
{
<iframe src="@Url.Content("~/Home/Number/" + n)" width=100 height=100 />
}
이 페이지를 실행하면 '를 페이지에 20 개의 IFRAME이 표시되며 각각 내부에 숫자가 표시됩니다. 여기서 내가하는 일은 장면 뒤에서 20 페이지 더 많은 페이지를로드하는 페이지를 만드는 것입니다. 계속하기 전에 20 페이지가 얼마나 빨리로드되는지 기록하십시오 (페이지를 몇 번 새로 고쳐로드를 반복하십시오).
다음이 Global.asax.cs로 이동 (예, 메소드 본문이 비어)이 방법을 추가
protected void Session_Start()
{
}
이제 페이지를 다시 실행합니다. 이번에는 20 개의 IFRAME이 약 1 초 간격으로 훨씬 느리게로드된다는 것을 알 수 있습니다. 이것은 Session_Start에서 실제로 아무것도하지 않기 때문에 이상합니다. 그것은 단지 비어있는 메소드입니다. 그러나 이것으로 모든 후속 페이지의 속도가 느려질 수 있습니다.
아무도 왜 이런 일이 벌어지고 있는지 알 수 있습니까? 더 나은 점은 누구나 수정/해결 방법이 있습니까? 내가 디버거가 연결되어있는 경우이 문제가 발생합니다 것을 발견했습니다
업데이트 (F5로 실행). 디버거가 연결되지 않은 상태에서 (Ctrl-F5) 실행하면 문제가없는 것 같습니다. 그래서, 아마도 중요한 문제는 아니지만 그것은 여전히 이상합니다.
SPA 응용 프로그램의 AJAX 요청에서이 문제가 발생했습니다. SessionState를 사용하지 말라고 조종했다. – voam