Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 31580|Odgovoriti: 0

[Vir] ASP.NET MVC5 je izdan v predkompiliranem načinu, kar izboljša hitrost nalaganja strani in zmogljivost

[Kopiraj povezavo]
Objavljeno 22. 8. 2020 ob 10:05:17 | | | |
Ko je v projektu preveč strani, se IIS zažene in spletna stran je ob prvem odpiranju zelo počasna, ker projekt ob izidu ni predkompiliran, ampak se dinamično prevaja, ko uporabnik obišče spletno stran. Če želite izboljšati zmogljivost svoje obstoječe strani in izvajati preverjanje napak na njej, je potrebno ob objavi projekta izbrati "Predkompiliraj med izdajo".

Uvod

Pri manjših projektih je objavljanje po privzetih nastavitvah lahko v osnovi običajno delovalo: prva stran se odpre v 56 sekundah (odvisno od konfiguracije strežnika), prva odprtja drugih strani pa v 12 sekundah, ne pa prva takojšnja odprtja.

Ko postanejo funkcije projekta zapletene in se število datotek poveča, bo za prvo odprtje prve strani po objavi potrebnih več kot 30 sekund, za prvo odprtje drugih strani pa približno 10 sekund, ne pa za prvo takojšnjo odprtje.

To je zato, ker projekt ob izidu ni predkompiliran, temveč se dinamično prevaja, ko uporabnik dostopa do spletne strani, in ko se aplikacijski bazen reciklira ali so datoteke projekta spremenjene, se ponovno prevede in spet doživi počasen "prvič", kar je nesprejemljivo.

Prednosti predkompilacije

  • Uspešnost. Prevedena koda se izvaja veliko hitreje kot skriptni jeziki, kot sta ECMAScript ali VBScript, ker je predstavitev bližje strojni kodi in ne zahteva dodatne analize.
  • Varnost. Prevedeno kodo je težje razvozlati kot neprevedeno izvorno kodo, ker ji manjka berljivost in abstrakcija, ki jo imajo visokonivojski jeziki. Poleg tega orodja za fuzziranje izboljšajo sposobnost prevedene kode, da se upre obratnemu inženiringu.
  • Stabilnost. Preverite svojo kodo za sintaktične napake, težave z varnostjo tipov in druge težave med prevajanjem. Z odkrivanjem teh napak med gradnjo lahko v kodi odpravimo številne napake.
  • Interoperabilnost. Ker MSIL koda podpira katerikoli .NET jezik, je mogoče v kodi uporabiti asemblerje, ki so prvotno napisani v drugih jezikih. Na primer, če pišete ASP.NET spletno stran v C#, lahko dodate referenco na .dll datoteko, napisano v Visual Basicu.


ASP.NET Jedro predkompilirano

Predkompilirano

Predkompilacija je privzeti način za ASP .Net Core. Ob času objave so vsi Razor pogledi v sistemu privzeto predkompilirani. Prevedeni pogled DLL je enotno poimenovan xxx.PrecompiledViews.dll ali xxx.Views.dll

Dinamična kompilacija

Celoten projekt je enostavno konfigurirati na dinamično prevajanje, le dodajte konfiguracijski projekt MvcRazorCompileOnPublish z vrednostjo false



ASP.NET Predhodna sestava spletne strani

Visual Studio uporabljamo za objavo spletne strani na naslednje načine:




Pomen možnosti "Dovoli posodobitve na tej predkompilirani strani" Ko objavimo .Net spletni projekt, na splošno vse . CS, ki samodejno ustvari DLL dinamično povezovalno knjižnico, ki lahko zelo dobro zaščiti izvorno kodo spletne strani, saj je strežniška koda običajno nameščena v . Ker so DLL datoteke v CS datoteki vse ustvarjene in nato nalagane na strežnik, jih drugi ne morejo enostavno odpreti!

Vendar pa je v drugih datotekah, kot so ashx, aspx in druge datoteke, kar je v njih, kar je, drugi lahko odprejo te datoteke za ogled, medtem ko drugi ne vidijo CS kode, vendar še vedno vidijo HTML kodo ali nekatere strežniške kontrole in povezane atribute v ASPX datoteki; Datoteka, kot je ashx, je enakovredna CS datoteki, koda v njej pa je lahko enostavno vidna;

Zato velja . CS datoteke so varne, vendar ASPX, ashx in druge datoteke niso varne; Torej, ali obstaja način, da so spletne datoteke, naložene na strežnik, varne? Obstaja način, da pri objavi ne označujete "Dovoli posodobitve na tej predhodno prevedeni strani";

Kljukaj Dovoli posodobitve na tej vnaprej sestavljeni strani

Če ob objavi spletne strani označite "Dovoli posodobitev te predkompilirane strani", je rezultat takšen: celotna datoteka spletne strani, razen vseh CS datotek, prevedenih v DLL datoteke, druge datoteke, in izvirna datoteka nima nobenih sprememb, kaj je v njej ali kaj, dokler jo drugi odprejo prek Notepada, lahko kodo, HTML kodo itd. znotraj drugi vidijo na prvi pogled.

Poleg tega jih je treba ob prvem obisku določene strani prevesti, da najdejo napake, nato pa, če ni napak, jih je mogoče normalno dostopati, zato je hitrost razmeroma počasna. Obiski po tem so normalni;

Odkljukaj "Dovoli posodobitve na tej predkompilirani strani"

Če pri objavi spleta ne označite "Dovoli posodobitev te predkompilirane strani", je rezultat naslednji: 1. Vse CS datoteke na spletni strani so prevedene v DLL datoteke; 2. Poleg cs datoteke se skupaj prevajajo tudi druge datoteke, kot so ASPX, ASHX in druge datoteke, vsaka datoteka pa ustvari ustrezno *.prevedeno datoteko v mapi BIN;

Nato, če si preko beležnice ogledate ASPX, ASHX in druge datoteke, v njih ne boste videli nobene kode, niti HTML oznaka kode ni vidna, odprite takšno datoteko, v njej je le ena vrstica besedila, vsebina je "To je označevalna datoteka, ki jo generira predkompilirano orodje, ne sme biti izbrisana!", velikost teh datotek pa je 1kb;

Če poskusite odpreti spletno stran, boste ugotovili, da razen prve strani po začetku projekta, ki še vedno traja 1~2 sekundi (brez EF), se prvič vsaka druga stran odpre takoj (EF-jeva prva počasnost presega obseg tega članka). Zaradi tega se počutim, kot da sem prepozno, da vidim predkompilirano!

Tukaj ti skrivaj povem, da brisanje mape Pogledi ne bo vplivalo na normalno odprtje spletne strani~ Zakaj je ne dovoliš izbrisati, ne upamo vprašati in si je ne upamo izbrisati.

Cilj je bil dosežen, a so se pojavile nekatere posledice, ki jih je bilo treba rešiti, kot je nered v mapniku zabojnikov.

Izberite »Ne združi«. Ustvari ločene sestave za vsako stran in kontrolo", rezultat pa je veliko več App_Web_*.dll datotek v zaboju.



Ob izidu projektni koren ustvari datoteko PrecompiledApp.config. Vsebina je naslednja:



Datoteka PrecompiledApp.config se uporablja za sledenje, kako je aplikacija nameščena in ali ASP.NET treba ob zahtevi prevesti kakšne datoteke.




Prejšnji:Razlaga novih funkcij in točk znanja v C# 8.0
Naslednji:EF DbContext zagotavlja, da je kontekst edinstven
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com