Keď je v projekte príliš veľa stránok, spustí sa IIS a webová stránka je pri prvom otvorení veľmi pomalá, pretože projekt nie je predkompilovaný v čase vydania, ale dynamicky sa kompiluje pri návšteve webovej stránky používateľom. Ak chcete zlepšiť výkon svojej existujúcej stránky a vykonať kontrolu chýb, je potrebné pri publikovaní projektu zvoliť možnosť "Predkompilovať počas vydania".
Zavedenie
Pri malých projektoch môže publikovanie podľa predvolených nastavení v podstate spĺňať bežný chod, prvá stránka sa otvorí za 56 sekúnd (v závislosti od konfigurácie servera) a prvé otvorenie ostatných stránok je v podstate dokončené za 12 sekúnd, nie prvé okamžité otvorenie.
Keď sa funkcie projektu stanú zložitými a počet súborov sa zvýši, otvorenie prvej stránky pri prvom spustení po publikovaní trvá viac ako 30 sekúnd a približne 10 sekúnd na prvé otvorenie ostatných strán, nie na prvé okamžité otvorenie.
Je to preto, že projekt nie je predkompilovaný v čase vydania, ale dynamicky sa kompiluje pri prístupe používateľa na webovú stránku, a keď je aplikačný pool recyklovaný alebo zmenené projektové súbory, bude znovu skompilovaný a opäť prechádza pomalým "prvýkrát", čo je neúnosné.
Výhody predkompilácie
- Výkon. Skompilovaný kód sa vykonáva oveľa rýchlejšie ako skriptovacie jazyky ako ECMAScript alebo VBScript, pretože ide o reprezentáciu bližšiu strojovému kódu a nevyžaduje ďalšiu analýzu.
- Bezpečnosť. Skompilovaný kód je ťažšie reverzne analyzovať ako nekompilovaný zdrojový kód, pretože mu chýba čitateľnosť a abstrakcia, akú majú vysokoúrovňové jazyky. Okrem toho nástroje na fuzzovanie zlepšujú schopnosť skompilovaného kódu odolávať spätnému inžinierstvu.
- Stabilita. Skontrolujte svoj kód na syntaxové chyby, problémy s bezpečnosťou písma a ďalšie problémy pri kompilácii. Zachytením týchto chýb pri zostavovaní je možné odstrániť mnohé chyby v kóde.
- Interoperabilita. Keďže MSIL kód podporuje akýkoľvek .NET jazyk, je možné použiť assemblery pôvodne napísané v iných jazykoch v kóde. Napríklad, ak píšete ASP.NET webovú stránku v C#, môžete pridať odkaz na .dll súbor napísaný vo Visual Basicu.
ASP.NET Jadro predkompilované
Predkompilované
Predkompilácia je predvolený spôsob pre ASP .Net Core. Pri publikovaní sú všetky Razor pohľady v systéme predvolene predkompilované. Kompilovaný pohľad DLL sa jednotne nazýva xxx.PrecompiledViews.dll alebo xxx.Views.dll
Dynamická kompilácia
Je jednoduché nakonfigurovať celý projekt na dynamickú kompiláciu, stačí pridať konfiguračný projekt MvcRazorCompileOnPublish s hodnotou false
ASP.NET Predkompilácia webovej stránky
Visual Studio používame na publikovanie webovej stránky týmito spôsobmi:
Význam možnosti "Povoľiť aktualizácie tejto predkompilovanej stránky" Keď publikujeme .Net webový projekt, všeobecne, všetky . CS, ktorý automaticky vygeneruje DLL dynamickú knižnicu odkazov, ktorá môže veľmi dobre chrániť zdrojový kód webovej stránky, pretože serverový kód je zvyčajne umiestnený v . Keďže DLL súbory v CS súbore sú všetky vygenerované a potom nahrané na server, ostatní ich nemôžu ľahko otvoriť!
Avšak iné súbory, ako ashx, aspx a iné súbory, čo v nich je, sú také, aké sú, iné môžu tieto súbory otvoriť na zobrazenie, hoci iné nevidia CS kód, ale stále vidia HTML kód alebo niektoré serverové ovládacie prvky a súvisiace atribúty v súbore ASPX; Súbor ako ashx je ekvivalentom CS súboru a kód v ňom je ľahko viditeľný;
Preto platí . CS súbory sú bezpečné, ale ASPX, ashx a iné súbory nie sú bezpečné; Existuje teda spôsob, ako spraviť webové súbory nahrané na server bezpečnými? Existuje spôsob, teda pri publikovaní nezaškrtávať "Povoliť aktualizácie tejto predkompilovanej stránky";
Skontroluj Povoliť aktualizácie tejto predkompilovanej stránky
Ak zaškrtnete "Povoliť aktualizáciu tejto predkompilovanej stránky" pri publikovaní webu, výsledok je takýto: Celý súbor webovej stránky, okrem všetkých CS súborov skompilovaných do DLL súborov, iných súborov, a pôvodný nemá žiadne zmeny, čo je vo vnútri, alebo čo, pokiaľ ho ostatní otvoria cez Notepad, kód, HTML kód a podobne vo vnútri môžu ostatní vidieť na prvý pohľad.
Navyše, keď používatelia prvýkrát navštívia určitú stránku, musia byť skompilované, aby našli chyby, a ak chyby nie sú, dajú sa normálne otvoriť, takže rýchlosť je relatívne pomalá. Návštevy potom sú normálne;
Odškrtnite "Povoliť aktualizácie tejto predkompilovanej stránky"
Ak nezaškrtnete "Povoliť aktualizáciu tejto predkompilovanej stránky" pri publikovaní webu, výsledok je nasledovný: 1. Všetky CS súbory na webovej stránke sa kompilujú do DLL súborov; 2. Okrem cs súboru sa spolu kompilujú aj ďalšie súbory, ako ASPX, ASHX a ďalšie, a každý súbor generuje príslušný *.kompilovaný súbor v adresári BIN;
Potom, ak si cez poznámkový blok pozriete súbory ASPX, ASHX a ďalšie súbory, neuvidíte v nich žiadny kód, dokonca ani HTML značkovanie nie je viditeľné, otvorte takýto súbor, je v ňom len jeden riadok textu, obsah je "Toto je značkovací súbor generovaný predkompilovaným nástrojom, nemal by byť vymazaný!", a veľkosť týchto súborov je 1kb;
Ak sa pokúsite otvoriť webovú stránku, zistíte, že okrem prvej stránky po začiatku projektu, ktorá stále trvá 1~2 sekundy (bez EF), sa prvé otváranie každej druhej stránky okamžite (prvé pomalenie EF presahuje rámec tohto článku). Cítim sa, akoby som neskoro videl predkompiláciu!
Tu vám tajne hovorím, že vymazanie adresára Views neovplyvní bežné otvorenie webovej stránky~ Prečo to nenecháte vymazať, neodvážime sa pýtať a neodvážime sa to vymazať.
Cieľ bol dosiahnutý a bolo potrebné vyriešiť niektoré následky, ako napríklad neporiadok v adresári bin (bin directory).
Vyber "Nespájať." Vytvor samostatné assemblies pre každú stránku a ovládanie", a výsledkom je oveľa viac App_Web_*.dll súborov v bine.
V čase vydania root projektu generuje súbor PrecompiledApp.config. Obsah je nasledovný:
Súbor PrecompiledApp.config sa používa na sledovanie, ako je aplikácia nasadená a či ASP.NET potrebné kompilovať nejaké súbory v čase požiadavky. |