Ha túl sok oldal van egy projektben, az IIS elindul, és a weboldal nagyon lassú, amikor először nyitod meg, mert a projekt nem előre fordított a megjelenéskor, hanem dinamikusan fordítódik, amikor a felhasználó meglátogatja a weboldalt. Ha javítani szeretnéd a meglévő oldalod teljesítményét és hibaellenőrzést végezz rajta, akkor a projekt közzétételekor válaszd a "Precompile during release" opciót.
Bevezetés
Kisebb projekteknél az alapértelmezett beállítások szerinti publikálás gyakorlatilag teljesítheti a normál működést, az első oldal 56 másodperc alatt nyílik meg (a szerver konfigurációjától függően), míg a többi oldal első megnyitása gyakorlatilag 12 másodperc alatt készül el, nem az első azonnali megnyitás.
Amint a projekt funkciói bonyolultabbá válnak és a fájlok száma nő, több mint 30 másodperc alatt nyitja meg az első oldalt a kiadás utáni első futásnál, és körülbelül 10 másodperc a többi oldal első megnyitásához, nem pedig az első azonnali megnyitáshoz.
Ennek oka, hogy a projekt nem előre fordított a megjelenéskor, hanem dinamikusan fordítják le, amikor a felhasználó eléri a weboldalt, és amikor az alkalmazáspoolt újrahasznosítják, vagy a projektfájlokat megváltoztatják, újra fordítják, és lassú "első alkalommal" megy keresztül, ami elviselhetetlen.
Az előfordítás előnyei
- Teljesítmény. A fordított kódot sokkal gyorsabban hajtják végre, mint az ECMAScript vagy a VBScript szkript-ek, mert ez egy gépi kódhoz közelebb álló reprezentáció, és nem igényel további elemzést.
- Biztonság. A fordított kódot nehezebb visszafejteni, mint a lefordítatlan forráskódot, mert hiányzik belőle az a olvashatóság és absztrakció, amit a magas szintű nyelvek kínálnak. Emellett a fuzzing eszközök növelik a fordított kód képességét, hogy ellenálljon a visszafejtés feldolgozásnak.
- Stabilitás. Ellenőrizd a kódodat szintaxishiba, típusbiztonsági problémák és egyéb problémák után a fordítás idején. Ha ezeket a hibákat a fejlesztés közben észleljük, sok hibát eltávolíthatunk a kódban.
- Interoperabilitás. Mivel a MSIL kód bármely .NET nyelvet támogat, lehetséges az eredetileg más nyelveken írt összeállításokat is használni a kódban. Például, ha ASP.NET weboldalt írsz C#-ban, hozzáadhatsz egy hivatkozást egy Visual Basic-ban írt .dll fájlhoz.
ASP.NET Core előre fordított
Előre fordított
Az előfordítás az ASP .Net Core alapértelmezett módja. A kiadás idején a rendszerben az összes Razor nézet alapértelmezetten előre fordítva van. A fordított nézetű DLL-t egyformában xxx.PrecompiledViews.dll vagy xxx.Views.dll néven viselik
Dinamikus összeállítás
Könnyű az egész projektet dinamikus fordításra konfigurálni, csak hozzáadni egy konfigurációs projektet MvcRazorCompileOnPublish fal értékkel
ASP.NET A weboldal előzetes összeállítása
A Visual Studio-t használjuk weboldal közzétételére a következő módokon:
A "Engedélyezd a frissítéseket ezen az előre fordított oldalon" opció jelentése Amikor .Net webprojektet publikálunk, általánosságban az összes . CS fájl, amely automatikusan generál egy DLL dinamikus link könyvtárat, amely nagyon jól védi a weboldal forráskódját, mivel a szerveroldali kód általában a . Mivel a CS fájlban lévő DLL fájlok mind generálódnak, majd feltöltik őket a szerverre, mások nem tudják könnyen megnyitni őket!
Azonban más fájlok, mint például az ashx, aspx és más fájlok, ami benne van, az az, amit benne van, mások megnyithatják ezeket a fájlokat, hogy megnézzék, bár mások nem látják a CS kódot, de még mindig láthatják a HTML kódot vagy néhány szerver vezérlőt és kapcsolódó atribútumot az ASPX fájlban; Az ashx fájl egyenértékű egy CS fájlval, és a benne lévő kód könnyen látható;
Ezért . A CS fájlok biztonságosak, de az ASPX, ASHX és más fájlok nem biztonságosak; Szóval, van mód arra, hogy a szerverre feltöltött webes fájlok biztonságossá váljanak? Van egy mód, vagyis publikáláskor ne jelöld be a "Engedélyezés frissítései ezen az előre fordított oldalon";
Jelöld meg a frissítések engedélyezését ezen az előre fordított oldalon
Ha bejelölöd a "Allow to update this precompiled site" gombot a webes közzétételkor, akkor az eredmény így van: az egész weboldal fájl, kivéve az összes CS fájlt, amelyet DLL fájlokká fordítottak, más fájlokká, és az eredetiben nem változik, hogy mi van benne vagy mi, amíg mások megnyitják a Notepadon keresztül, a benne lévő kód, HTML kód stb. mások számára egy pillantással látható.
Ezen felül, amikor a felhasználók először látogatnak meg egy adott oldalt, azokat le kell fordítani, hogy megtalálják a hibákat, és ha nincs hiba, akkor normálisan elérhetővé válik, így a sebesség viszonylag lassú lesz. Az utána következő látogatások normálisak;
Kapcsold ki a "Engedélyezd a frissítéseket ezen előre fordított oldalon" opciót
Ha nem jelöli be a "Engedélyezd az előre fordított oldal frissítését" gombot a webes közzétételkor, akkor az eredmény a következő: 1. Minden CS fájl a weboldalon DLL fájlokká van fordítva; 2. A cs fájlon kívül más fájlokat, például az ASPX-et, ASHX-et és más fájlokat is összefordítják, és minden fájl hozzátartozik egy *.compiled fájlt a BIN könyvtárban;
Ezután, ha az ASPX-et, ASHX-et és más fájlokat a jegyzettömbön keresztül nézed, nem látsz bennük semmilyen kódot, még a HTML kódjelzés sem látható, nyiss ki egy fájlt, csak egy sor van benne, a tartalom így szól: "Ez egy előre fordított eszközzel generált jelölőfájl, nem szabad törölni!", és ezeknek a fájloknak a mérete 1 kb;
Ha megpróbálsz weboldalt megnyitni, azt fogod látni, hogy kivéve az első oldalt a projekt kezdete után, ami még mindig 1~2 másodpercet vesz igénybe (nincs EF), az első alkalommal minden másik oldal azonnal megnyílik (EF első lassúsága meghaladja a cikk tárgyát). Ez azt az érzést kelti bennem, hogy későn nézném előre fordított verziókat!
Itt titokban azt mondom, hogy a Views könyvtár törlése nem befolyásolja a weboldal normál megnyitását~ Miért nem hagyjátok törölni, nem merünk kérdezni, és nem merjük törölni.
A cél elérődött, és voltak olyan utóhatások, amiket meg kellett oldani, például a bin-könyvtárban lévő rendetlenség.
Válaszd a "Nem egyesítés" opciót. Külön összeállításokat hozz létre minden oldalhoz és vezérlőhöz", így az eredmény sokkal több App_Web_*.dll fájl lesz a bin-ben.
A megjelenéskor a projekt root generál egy PrecompiledApp.config fájlt. A tartalom a következő:
A PrecompiledApp.config fájl segítségével nyomon követik, hogyan telepítik az alkalmazás és hogy ASP.NET szükséges-e fájlokat fordítani a kérés időpontjában. |