I den forrige artikel er der et andet legacy-problem, som ikke er blevet løst, nemlig ASP.NET MVC MapRoute .htm ikke virker, hvordan løser man det, hvis man ikke bruger runAllManagedModulesForAllRequests="true"? Senere fandt jeg en løsning:
Reference: ASP.NET MVC: Videresend en .html anmodning til en MVC-rute
Jeg diskuterede, hvorfor man bør prøve ikke at bruge runAllManagedModulesForAllRequests="true", og så fandt jeg to relaterede artikler:
Kunsten at gøre det enkelt: Optimer ydeevnen af dine webapplikationer: Brug ikke runAllManagedModulesForAllRequests="true". Brug ikke runAllManagedModulesForAllRequests="true" til at få din MVC-routing til at virke Uddrag fra en beskrivelse i teksten:
Denne stærkt anbefalede løsning kan give andre problemer. Disse problemer opstår i form af, at alle dine registrerede HTTP-moduler kører på hver forespørgsel, ikke kun på administrerede forespørgsler (f.eks. .aspx). Det betyder, at modulerne kører på alle .jpg .gif .css .html .pdf osv. runAllManagedModulesForAllRequests er som en kanalswitch for IIS-moduler og forespørgsler; hvis denne switch er tændt, vil alle forespørgsler, der får adgang til dette site, gå ind i Modules til behandling, hvilket inkluderer nogle statiske filanmodninger, hvilket også er den mest almindelige type "ingen behov for behandling"-forespørgsler, fordi anmodningen går ind i moduler, og der skal være et tilsvarende program til at behandle den. Dette medfører unødvendig ydeevneoverhead, fordi statiske filer kun er til visning, der er slet ikke behov for modulbehandling, små sites betyder ikke noget, når nogle store PV-sites gør det samme, vil det skabe et vist "pres" på IIS's modulers programbehandling, og konklusionen opsummeret i et blogindlæg ovenfor er spild (spild... ) og potentiale (potentiale... )。
Lad os lave en test med Application_BeginRequest for at se, hvilke forespørgsler der logges for forskellige konfigurationer af runAllManagedModulesForAllRequests, og teste eksempelkoden:
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 post:
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_* Billedet er det, jeg tilføjede i visningen, det er bare en anmodning om at teste et statisk billede, hvis du er på et stort site, tilføj anmodningstestkoden og opdater siden derefter, vil du opdage, at der er mange meningsløse forespørgsler. Måske kigger du på testposten ovenfor, den ser ikke ud til at forklare noget problem, men forestil dig bare, hvis et site med mange statiske filer, og antallet af besøg er titusinder af millioner, og siden indeholder mange sider, selvom det er et lille problem, vil det blive uendeligt forstørret, og til sidst finder du ud af, at det bare er et konfigurationsspørgsmål.
Det er det, jeg vil ændre koden.
|