이전 글에서 해결되지 않은 또 다른 레거시 문제가 있습니다. ASP.NET 즉, MVC MapRoute .htm이 작동하지 않는다는 점입니다. runAllManagedModulesForAllRequests="true"를 사용하지 않으면 어떻게 해결하나요? 나중에 해결책을 찾았습니다:
참고: ASP.NET MVC: .html 요청을 MVC 경로로 라우팅하기.
runAllManagedModulesForAllRequests="true"를 사용하지 말아야 하는 이유에 대해 논의했고, 관련 기사 두 개를 찾았습니다:
단순함의 예술: 웹 애플리케이션 성능 최적화: runAllManagedModulesForAllRequests="true"를 사용하지 마세요. MVC 라우팅을 작동시킬 때 runAllManagedModulesForAllRequests="true"를 사용하지 마세요 본문에 있는 설명에서 발췌:
이 강력히 추천하는 해결책은 다른 문제를 일으킬 수 있습니다. 이 문제들은 등록된 모든 HTTP 모듈이 관리 요청뿐만 아니라 모든 요청에서 실행되어야 한다는 점(예: .aspx)에서 발생합니다. 즉, 모듈은 모든 .jpg .gif .css .html .pdf에서 실행됩니다. runAllManagedModulesForAllRequests 는 IIS 모듈과 요청의 채널 스위치와 같습니다. 이 스위치가 켜져 있으면 이 사이트에 접근하는 모든 요청이 모듈로 들어가 처리하게 되며, 여기에는 일부 정적 파일 요청도 포함됩니다. 이는 가장 흔한 "처리할 필요 없음" 요청 유형이기도 합니다. 왜냐하면 요청이 모듈에 들어가면 해당 프로그램이 처리해야 하기 때문입니다. 이로 인해 불필요한 성능 부담이 발생하는데, 정적 파일은 단지 표시용이라 모듈 처리가 전혀 필요 없고, 작은 사이트는 중요하지 않습니다. 일부 대형 태양광 사이트가 같은 작업을 하면 IIS의 모듈 프로그램 처리에 '압박'이 가해집니다. 위 블로그 글에서 요약한 결론은 낭비(낭비... ) 그리고 퍼텐셜(퍼텐셜... )。
runAllManagedModulesForAllRequests의 다양한 구성에서 어떤 요청이 기록되는지 Application_BeginRequest 테스트하고, 샘플 코드를 테스트해 봅시다:
runAllManagedModulesForAllRequests="fasle", data.txt log:
http://localhost:55127/
http://localhost:55127/bundles/test2?v=2Fz3B0iizV2NnnamQFrx-NbYJNTFeBJ2GM05SilbtQU1
http://localhost:55127/bundles/test1?v=MDbdFKJHBa_ctS5x4He1bMV0_RjRq8jpcIAvPpKiN6U1 runAllManagedModulesForAllRequests="true", data.txt record:
http://localhost:55127/
http://localhost:55127/bundles/test2?v=2Fz3B0iizV2NnnamQFrx-NbYJNTFeBJ2GM05SilbtQU1
http://localhost:55127/bundles/test1?v=MDbdFKJHBa_ctS5x4He1bMV0_RjRq8jpcIAvPpKiN6U1
http://localhost:55127/Content/logo_small_1.gif
http://localhost:55127/Content/logo_small_4.gif
http://localhost:55127/Content/logo_small_2.gif
http://localhost:55127/Content/logo_small_3.gif logo_small_* 이미지는 제가 뷰에 추가한 것이고, 정적인 이미지를 테스트하기 위한 요청일 뿐입니다. 큰 사이트라면 테스트 코드를 추가한 후 페이지를 새로고침하면 의미 없는 요청이 많다는 것을 알게 될 것입니다. 위의 테스트 기록을 보면 문제를 설명하지 못하는 것 같지만, 만약 정적 파일이 많은 사이트에 방문 수가 수천만 건이며, 사이트에 많은 페이지가 있다고 상상해 보세요. 비록 작은 문제이지만 무한히 확대되어 결국 단순히 설정 문제임을 알게 됩니다.
됐어, 코드를 바꿀게.
|