W poprzednim artykule pojawił się kolejny problem legacy, który nie został rozwiązany, a mianowicie: ASP.NET MVC MapRoute .htm nie działa, jak go rozwiązać, jeśli nie używasz runAllManagedModulesForAllRequests="true"? Później znalazłem rozwiązanie:
Źródło: ASP.NET MVC: Przekieruj zapytanie .html na trasę MVC
Omówiłem, dlaczego nie powinieneś używać runAllManagedModulesForAllRequests="true", a potem znalazłem dwa powiązane artykuły:
Sztuka prostoty: Optymalizuj wydajność swoich aplikacji webowych: Nie używaj runAllManagedModulesForAllRequests="true". Nie używaj runAllManagedModulesForAllRequests="true" podczas uruchamiania routingu MVC Fragment opisu w tekście:
Ta wysoce zalecana poprawka może powodować inne problemy. Problemy te pojawiają się w postaci uruchamiania wszystkich zarejestrowanych modułów HTTP na każde żądanie, a nie tylko na zarządzanych (np. .aspx). Oznacza to, że moduły będą działać na każdej .jpg .gif .css .html .pdf itd. runAllManagedModulesForAllRequests jest jak przełącznik kanałów dla modułów IIS i żądań, jeśli ten przełącznik jest włączony, to wszystkie żądania dostające się do tej strony trafiają do modułów w celu przetwarzania, co obejmuje niektóre statyczne żądania plików, które są również najczęstszym rodzajem żądań "nie trzeba przetwarzać", ponieważ żądanie trafia do modułów, a następnie musi istnieć odpowiedni program do jego przetwarzania. To powoduje niepotrzebne obciążenie wydajnościowe, bo pliki statyczne służą tylko do wyświetlania, nie ma potrzeby w ogóle przetwarzać modułów, małe strony nie mają znaczenia, a gdy duże stacje PV robią to samo, powoduje to "presję" na przetwarzanie programów modułów w IIS, a wniosek podsumowany w powyższym wpisie na blogu to marnotrawstwo (marnotrawstwo... ) oraz potencjał (potencjał... )。
Zróbmy test z Application_BeginRequest, aby zobaczyć, jakie żądania są rejestrowane dla różnych konfiguracji runAllManagedModulesForAllRequests, i przetestujmy przykładowy kod:
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 rekord:
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_* Obraz to to, co dodałem w widoku, to po prostu żądanie przetestowania statycznego obrazu. Jeśli jesteś na dużej stronie, dodaj kod testowy żądania, a potem odśwież stronę, znajdziesz tam mnóstwo bezsensownych żądań. Może spojrzysz na powyższy rekord testu – nie wydaje się on wyjaśniać żadnego problemu, ale wyobraź sobie, że strona jest pełna plików statycznych, a liczba odwiedzin to dziesiątki milionów i strona zawiera wiele stron, choć to mały problem, będzie nieskończenie powiększony, a w końcu okaże się, że to po prostu problem konfiguracyjny.
To wszystko, zmienię kod.
|