Когато има твърде много страници в проекта, IIS стартира и уебсайтът е много бавен при първото му отваряне, защото проектът не е предварително компилиран при пускането си, а се компилира динамично, когато потребителят посети уеб страницата. Ако искате да подобрите производителността на съществуващия си сайт и да извършите проверка на грешки, е необходимо да изберете "Предварително компилиране по време на пускането" при публикуване на проекта си.
Въвеждането
За малки проекти публикуването според стандартните настройки може да изпълни нормалната работа, първата страница се отваря за 56 секунди (в зависимост от конфигурацията на сървъра), а първото отваряне на другите страници се завършва за 12 секунди, а не за първото мигновено отваряне.
След като функциите на проекта станат сложни и броят на файловете се увеличи, ще отнеме повече от 30 секунди да се отвори първата страница при първото издание след публикуването и около 10 секунди за първото отваряне на други страници, а не за първото мигновено отваряне.
Това е така, защото проектът не е предварително компилиран при пускането си, а динамично се компилира при достъп до уеб страницата, и след като пулът от приложения бъде рециклиран или файловете на проекта се променят, той ще бъде компилиран и отново ще премине през бавен "първи път", което е нетърпимо.
Ползи от предварителната компилация
- Представяне. Компилираният код се изпълнява много по-бързо от скриптови езици като ECMAScript или VBScript, тъй като представлява представяне, по-близко до машинния код и не изисква допълнителен анализ.
- Охрана. Компилираният код е по-труден за обратен инженеринг от некомпилирания изходен код, тъй като му липсва четимостта и абстракцията, които имат високопоставените езици. Освен това, фузинг инструментите подобряват способността на компилирания код да устои на обратен инженеринг на обработката.
- Стабилност. Провери кода си за синтактични грешки, проблеми с безопасността на шрифта и други по време на компилация. Чрез улавяне на тези грешки по време на изграждане могат да бъдат елиминирани много грешки в кода.
- Съвместимост. Тъй като MSIL кодът поддържа всеки .NET език, е възможно да се използват асембли, първоначално написани на други езици в кода. Например, ако пишете ASP.NET уеб страница на C#, можете да добавите препратка към .dll файл, написан на Visual Basic.
ASP.NET Core предварително компилиран
Предварително компилирано
Предварителната компилация е стандартният начин за ASP .Net Core. При публикуване всички изгледи на Razor в системата са предварително компилирани по подразбиране. Компилираният изглед DLL се нарича еднородно xxx.PrecompiledViews.dll или xxx.Views.dll
Динамична компилация
Лесно е да конфигурирате целия проект за динамична компилация, просто добавете конфигурационен проект MvcRazorCompileOnPublish със стойност false
ASP.NET Предварителна компилация на уебсайта
Използваме Visual Studio за публикуване на уебсайт по следните начини:
Значението на опцията "Позволете актуализации на този предварително компилиран сайт" Когато публикуваме .Net уеб проект, обикновено всички . CS файл, който автоматично генерира DLL динамична библиотека с връзки, която може много добре да защити изходния код на сайта, тъй като сървърният код обикновено се поставя в . Тъй като DLL файловете в CS файла са всички генерирани, качете ги на сървъра, другите не могат лесно да ги отворят!
Въпреки това, други файлове, като ashx, aspx и други файлове, това, което е вътре, е това, което е, други могат да отворят тези файлове за преглед, докато други не могат да видят CS кода, но все пак могат да видят HTML кода или някои сървърни контроли и свързани атрибути във файла ASPX; Файл като ashx е еквивалентен на CS файл, а кодът в него лесно се вижда;
Следователно, . CS файловете са безопасни, но ASPX, ashx и други файлове не са безопасни; Има ли начин уеб файловете, качени на сървъра, да са безопасни? Има начин, а именно, при публикуване, да не отбелязвате "Позволете актуализации на този предварително компилиран сайт";
Проверете Позволете актуализации на този предварително компилиран сайт
Ако отметнете "Позволи обновяване на този предварително компилиран сайт" при публикуване в уеб, резултатът е следният: Целият файл на уебсайта, с изключение на всички CS файлове, компилирани в DLL файлове, други файлове и оригиналния, няма промени, какво има вътре или какво, стига другите да го отворят през Notepad, кодът, HTML кодът и т.н. вътре могат да се видят от други с един поглед.
Освен това, когато потребителите за първи път посетят определена страница, те трябва да бъдат компилирани, за да открият бъгове, а ако няма грешки, те могат да бъдат достъпени нормално, така че скоростта ще стане сравнително бавна. Посещенията след това са нормални;
Махнете отметката "Позволи актуализации на този предварително компилиран сайт"
Ако не отбележите "Позволи се обновява този предварително компилиран сайт" при публикуване на уеб, резултатът е следният: 1. Всички CS файлове в уебсайта се компилират в DLL файлове; 2. Освен cs файла, други файлове като ASPX, ASHX и други файлове също се компилират заедно, като всеки файл генерира съответния *.compiled файл в директорията BIN;
След това, ако разглеждате ASPX, ASHX и други файлове през бележника, няма да видите никакъв код в тях, дори HTML кодът не е видим, отворете такъв файл, в него има само един ред текст, съдържанието е "Това е файл за маркировка, генериран от предварително компилирания инструмент, не трябва да се изтрива!", а размерът на тези файлове е 1kb;
Ако опитате да отворите страница на уебсайт, ще откриете, че с изключение на първата страница след започване на проекта, която все още отнема 1~2 секунди (без EF), първият път на всяка друга страница се отваря мигновено (първата бавност на EF е извън обхвата на тази статия). Това ме кара да се чувствам, че закъснявам да видя предварително компилирано!
Тук тайно ви казвам, че изтриването на директорията Views няма да повлияе на нормалното отваряне на уеб страница~ Защо не я оставите да бъде изтрита, ние не смеем да питаме и не смеем да я изтрием.
Целта беше постигната и имаше някои последици, които трябваше да бъдат решени, като безпорядъка в директорията с кошчета.
Изберете "Не сливай." Създай отделни асембли за всяка страница и контрол", и резултатът е много повече App_Web_*.dll файлове в кошницата.
При пускането на проекта root генерира PrecompiledApp.config файл. Съдържанието е следното:
PrecompiledApp.config файлът се използва за проследяване на начина, по който приложението е внедрено и дали ASP.NET трябва да компилира файлове по време на заявката. |