Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 31580|Válasz: 0

[Forrás] ASP.NET MVC5 előre fordított módban jelenik meg, javítva az oldalbetöltési sebességet és a teljesítményt

[Linket másol]
Közzétéve: 2020-8-22 10:05:17 | | | |
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.




Előző:C# 8.0 új funkciók és tudáspontok magyarázata
Következő:Az EF DbContext garantálja, hogy a kontextus egyedi
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com