Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 31580|Odpowiedź: 0

[Źródło] ASP.NET MVC5 jest wydany w trybie prekompilowanym, poprawiając szybkość ładowania stron i wydajność

[Skopiuj link]
Opublikowano 2020-8-22 10:05:17 | | | |
Gdy w projekcie jest zbyt wiele stron, IIS uruchamia się i strona internetowa jest bardzo wolna przy pierwszym otwarciu, ponieważ projekt nie jest wstępnie skompilowany w momencie wydania, lecz dynamicznie kompilowany podczas odwiedzenia strony użytkownika. Jeśli chcesz poprawić wydajność swojej istniejącej strony i przeprowadzić sprawdzanie błędów, konieczne jest wyznaczenie "Prekompilacja podczas wydania" podczas publikacji projektu.

Wprowadzenie

W przypadku małych projektów publikacja według domyślnych ustawień może zasadniczo spełnić normalne warunki – pierwsza strona otwiera się w 56 sekund (w zależności od konfiguracji serwera), a pierwsze otwarcie pozostałych stron w 12 sekund, a nie pierwsze natychmiastowe otwarcie.

Gdy funkcje projektu stają się skomplikowane, a liczba plików wzrasta, otwarcie pierwszej strony przy pierwszym uruchomieniu po publikacji zajmie ponad 30 sekund, a pierwsze otwarcie pozostałych stron około 10 sekund, a nie pierwsze natychmiastowe otwarcie.

Dzieje się tak, ponieważ projekt nie jest wstępnie skompilowany w momencie wydania, lecz jest dynamicznie kompilowany podczas dostępu użytkownika do strony internetowej, a po ponownym wykorzystaniu puli aplikacji lub zmianie plików projektu, zostanie ponownie skompilowany i przejdzie przez powolny "pierwszy raz", co jest nie do zniesienia.

Korzyści z prekompilacji

  • Występ. Kod skompilowany jest wykonywany znacznie szybciej niż języki skryptowe, takie jak ECMAScript czy VBScript, ponieważ jest to reprezentacja bliższa kodowi maszynowemu i nie wymaga dodatkowej analizy.
  • Ochrona. Kod skompilowany jest trudniejszy do odtworzenia niż nieskompilowany kod źródłowy, ponieważ brakuje mu czytelności i abstrakcji, które mają języki wysokiego poziomu. Dodatkowo, narzędzia do fuzzingu zwiększają zdolność skompilowanego kodu do odporności na przetwarzanie wsteczne.
  • Stabilność. Sprawdź kod pod kątem błędów składniowych, problemów z bezpieczeństwem pisania i innych kwestii podczas kompilacji. Wykrywając te błędy podczas budowania, wiele błędów można wyeliminować w kodzie.
  • Interoperacyjność. Ponieważ kod MSIL obsługuje dowolny język .NET, możliwe jest użycie asemblów pierwotnie napisanych w innych językach. Na przykład, jeśli piszesz ASP.NET stronę w C#, możesz dodać odnośnik do pliku .dll napisanego w Visual Basic.


ASP.NET Core prekompilowany

Wstępnie skompilowane

Prekompilacja jest domyślnym sposobem dla ASP .Net Core. W momencie publikacji wszystkie widoki Razor w systemie są domyślnie wstępnie kompilowane. Skompilowany widok DLL jest jednolicie nazywany xxx.PrecompiledViews.dll lub xxx.Views.dll

Kompilacja dynamiczna

Łatwo skonfigurować cały projekt do kompilacji dynamicznej, wystarczy dodać projekt konfiguracyjny MvcRazorCompileOnPublish z wartością false



ASP.NET Wstępne opracowanie strony internetowej

Używamy Visual Studio do publikowania strony internetowej w następujący sposób:




Znaczenie opcji "Zezwalaj na aktualizacje tej prekompilowanej strony" Gdy publikujemy projekt .Net, ogólnie rzecz biorąc, wszystkie . CS, który automatycznie generuje dynamiczną bibliotekę linków DLL, która bardzo dobrze chroni kod źródłowy strony, ponieważ kod po stronie serwera jest zazwyczaj umieszczany w . Ponieważ pliki DLL w pliku CS są generowane, a potem przesyłane na serwer, inni nie mogą ich łatwo otworzyć!

Jednak inne pliki, takie jak ashx, aspx i inne pliki, są obecne w tym, czym są; inne mogą je otwierać, aby je zobaczyć, choć inni nie widzą kodu CS, ale nadal widzą kod HTML lub niektóre elementy sterujące serwerem i powiązane atrybuty w pliku ASPX; Plik taki jak ashx jest odpowiednikiem pliku CS, a kod w nim zawarty jest łatwo widoczny;

Zatem . Pliki CS są bezpieczne, ale pliki ASPX, ashx i inne nie są bezpieczne; Czy istnieje sposób, aby pliki internetowe przesłane na serwer były bezpieczne? Istnieje sposób, czyli podczas publikowania nie zaznaczaj "Zezwalaj na aktualizacje tej wstępnie skompilowanej strony";

Sprawdź Zezwalaj na aktualizacje tej wstępnie skompilowanej strony

Jeśli zaznaczysz "Pozwól na aktualizację tej prekompilowanej strony" podczas publikowania strony, to wynik wygląda tak: cały plik strony, poza wszystkimi plikami CS skompilowanymi do plików DLL, innymi plikami, a oryginalny plik nie zawiera żadnych zmian, co jest w środku ani co, dopóki inni otwierają go przez Notatnik, kod, kod HTML itd. w środku są widoczne od razu przez innych.

Dodatkowo, gdy użytkownicy po raz pierwszy odwiedzają daną stronę, muszą być kompilowane, aby znaleźć błędy, a jeśli nie ma błędów, można do nich uzyskać dostęp normalnie, więc prędkość staje się stosunkowo wolna. Wizyty po tym są normalne;

Odznacz "Zezwalaj na aktualizacje tej wstępnie skompilowanej strony"

Jeśli nie zaznaczysz "Zezwalaj na aktualizację tej prekompilowanej strony" podczas publikowania strony, wynik jest następujący: 1. Wszystkie pliki CS na stronie są kompilowane do plików DLL; 2. Oprócz pliku cs, inne pliki, takie jak ASPX, ASHX i inne, są również kompilowane razem, a każdy plik generuje odpowiadający mu plik *.compiled w katalogu BIN;

Następnie, jeśli przeglądasz pliki ASPX, ASHX i inne przez notatnik, nie zobaczysz w nich żadnego kodu, nawet znaczniki HTML nie są widoczne, otwórz taki plik, jest w nim tylko jedna linia tekstu, treść brzmi: "To jest plik znaczników wygenerowany przez prekompilowane narzędzie, nie powinien być usuwany!", a rozmiar tych plików to 1kb;

Jeśli spróbujesz otworzyć stronę internetową, zauważysz, że poza pierwszą stroną po rozpoczęciu projektu, która nadal trwa 1~2 sekundy (bez EF), pierwsze otwarcie każdej drugiej strony otwiera się natychmiast (pierwsze spowolnienie EF wykracza poza zakres tego artykułu). To sprawia, że czuję się, jakbym spóźnił się z wstępnym skompilowaniem!

Tutaj potajemnie mówię ci, że usunięcie katalogu Views nie wpłynie na normalne otwarcie strony~ Dlaczego nie pozwolisz go usunąć, nie odważymy się pytać i nie odważymy się go usunąć.

Cel został osiągnięty, a pojawiły się pewne skutki uboczne, które trzeba było rozwiązać, takie jak bałagan w katalogu koszy.

Wybierz "Nie łącz". Stwórz osobne asemblery dla każdej strony i kontroli", a efektem jest znacznie więcej App_Web_*.dll plików w bin.



W momencie wydania projekt root generuje plik PrecompiledApp.config. Treść jest następująca:



Plik PrecompiledApp.config służy do śledzenia, jak aplikacja jest wdrażana i czy ASP.NET potrzeba kompilacji jakichś plików w momencie zgłoszenia.




Poprzedni:Wyjaśnienie nowych funkcji i punktów wiedzy w C# 8.0
Następny:EF DbContext gwarantuje, że kontekst jest unikalny
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com