In het vorige artikel is er nog een legacy-probleem dat niet is opgelost, namelijk ASP.NET MVC MapRoute .htm niet werkt, hoe los je dit op als je runAllManagedModulesForAllRequests="true" niet gebruikt? Later vond ik een oplossing:
Referentie: ASP.NET MVC: Stuur een .html verzoek naar een MVC-route
Ik besprak waarom je zou moeten proberen runAllManagedModulesForAllRequests="true" niet te gebruiken, en toen vond ik twee gerelateerde artikelen:
De kunst van eenvoud: Optimaliseer de prestaties van je webapplicaties: Gebruik geen runAllManagedModulesForAllRequests="true". Gebruik runAllManagedModulesForAllRequests="true" niet om je MVC-routering aan de praat te krijgen Fragment uit een beschrijving in de tekst:
Deze sterk aanbevolen oplossing kan andere problemen veroorzaken. Deze problemen ontstaan in het laten draaien van al je geregistreerde HTTP-modules op elk verzoek, niet alleen op beheerde verzoeken (bijvoorbeeld .aspx). Dit betekent dat modules op elke .jpg .gif .css .html .pdf enzovoort draaien. runAllManagedModulesForAllRequests is als een kanaalschakelaar voor IIS-modules en verzoeken; als deze schakelaar wordt ingeschakeld, gaan alle verzoeken die deze site bereiken naar Modules voor verwerking, wat ook statische bestandsverzoeken omvat, wat ook het meest voorkomende soort "geen behoefte om te verwerken" verzoeken is, omdat het verzoek modules binnenkomt en er een overeenkomstig programma moet zijn om het te verwerken. Dit veroorzaakt onnodige prestatie-overhead, omdat statische bestanden alleen voor weergave zijn, er helemaal geen behoefte is om modules te verwerken, kleine sites maken niet uit, wanneer sommige grote PV-sites hetzelfde doen, veroorzaakt dat wat "druk" op de verwerking van IIS-modules programma's, en de conclusie die hierboven in een blogpost wordt samengevat is verspilling (verspilling... ) en potentieel (potentieel... )。
Laten we een test doen met Application_BeginRequest om te zien welke verzoeken worden gelogd voor verschillende configuraties van runAllManagedModulesForAllRequests, en de voorbeeldcode testen:
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_* De afbeelding is wat ik in de weergave heb toegevoegd, dit is gewoon een verzoek om een statische afbeelding te testen; als je op een grote site bent, voeg dan de aanvraagtestcode toe en ververs dan de pagina, dan zul je merken dat er veel zinloze verzoeken zijn. Misschien kijk je naar het testrecord hierboven, dat lijkt geen probleem te verklaren, maar stel je voor: een site met veel statische bestanden, het aantal bezoeken is tientallen miljoenen, en de site bevat veel pagina's, hoewel het een klein probleem is, het wordt oneindig vergroot, en uiteindelijk blijkt het gewoon een configuratieprobleem te zijn.
Dat is het, ik ga de code veranderen.
|