3

가능한 한 코드를 최적화하려고합니다. 나는 다음과 같은 많은 부분 파일을 사용한다 :MVC3 페이지에서 RenderPartial을 포함하는 오버 헤드는 무엇입니까

@if (Model.PageMeta.Sidebar == PageMetaSidebar.Small) { Html.RenderPartial("_SmallSidebar"); } 
.. 
.. 
.. 

누군가가이 성능 오버 헤드가 있는지 알려 줄 수 있는가? 면도기 뷰가 컴파일 된 것으로 알고 있습니다. 페이지가 표시 될 때 내가 사용하는 부분 파일 각각에 대한 데이터를 얻기 위해 읽은 다른 디스크가있는 것입니까? 그렇다면 레이아웃 페이지의 예를 들어 RenderPartials와 함께 추가 오버 헤드가 얼마나 될지 예상 할 수 있습니다.

답변

2

결과 HTML을 브라우저로 다시 스트리밍하기 전에 asp.net 웹 서버에서 일부만 가져 오기 때문에 눈에 띄는 성능 저하는 없습니다. 이것은 비싼 디스크 읽기가 아니며 단일 cshtml보다 느리게 나타납니다. 동일한 뷰가 많은 뷰에서 재사용되는 경우 부분적으로 사용되어야합니다. 단일보기에서만 사용되는 경우 모델의 일부를 여러보기로 구분하는 별도의 부분으로 분리하는 것이 선명도의 문제입니다.

참고도 바로 사용할 수 있습니다

@Html.Partial("YourPartial") 

을 오히려 RenderPartial을 사용하는 것보다. 그러면 로컬 뷰 폴더에서 찾은 다음 공유 폴더에서 찾을 수 있습니다.

+0

문자열을 반환하기 때문에 Partial이 느리고 RenderPartial이 아닌가요? 아니면 성능에 큰 타격을 입지 않을까요? – Alex

+0

RenderPartial이 성능면에서 더 우수하다는 것이 맞습니다. 자세한 내용은 http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction을 참조하십시오. –

0

나는 RenderPartial ~ 5 번을 사용하는 것이 페이지를 잘못 설계하는 데 상당한 영향을 줄 것이라고 생각하지 않습니다. 로직을 꺼내어 (페이지를 더 깨끗하게 만들고, 여러 뷰에서 사용하는 등) 이해가된다면 그렇게하십시오. 중요한 성능 문제가 발견되면 그 시점에서 살펴 봐야하지만 조만간 성능을 저하시킬 수 있다고 생각하기 때문에 조기에 최적화 및 열악한 디자인을 만들지 마십시오.

0

mvc-mini-profiler으로 재생할 가능성이있는 잠재적 인 히트 곡을 더 잘 이해하고 싶다면.

비록 제가 성숙한 최적화를지지하지는 않습니다. 그러나 프로파일 링 도구를 사용하면 잠재적 인 병목 현상을보다 잘 이해할 수 있으므로 향후에 병목 현상을 피할 수 있습니다.