See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 31580|Vastuse: 0

[Allikas] ASP.NET MVC5 ilmub eelkompileeritud režiimis, parandades lehe laadimise kiirust ja jõudlust

[Kopeeri link]
Postitatud 2020-8-22 10:05:17 | | | |
Kui projektis on liiga palju lehti, käivitub IIS ja veebisait on väga aeglane, kui selle esimest korda avastad, sest projekt ei ole väljalaske ajal eelkompileeritud, vaid kompileeritakse dünaamiliselt kasutaja külastades veebilehte. Kui soovid parandada olemasoleva saidi jõudlust ja teha veakontrolli, tuleb projekti avaldamisel valida "Eelkompileeri väljalaske ajal".

Sissejuhatus

Väikeste projektide puhul võib vaikimisi seadistuste järgi avaldamine põhimõtteliselt täita tavapärase töö: esimene leht avatakse 56 sekundiga (sõltuvalt serveri konfiguratsioonist) ja teiste lehtede esimene avamine toimub põhimõtteliselt 12 sekundiga, mitte esimene kohene avamine.

Kui projekti funktsioonid muutuvad keerukaks ja failide arv suureneb, võtab esimese lehekülje avamine pärast avaldamist üle 30 sekundi ning teiste lehtede esimese avamise puhul umbes 10 sekundit, mitte esimese kohese avamise puhul.

See on tingitud sellest, et projekt ei ole avaldamise hetkel eelkompileeritud, vaid see kompileeritakse dünaamiliselt kasutaja ligipääsu ajal veebilehele ning kui rakenduste kogum on taaskasutatud või projektifailid muudetud, kompileeritakse see uuesti ja läbib aeglase "esimese korra" uuesti, mis on talumatu.

Eelkompileerimise eelised

  • Sooritus. Kompileeritud kood täidetakse palju kiiremini kui skriptikeeled nagu ECMAScript või VBScript, kuna see on masinkoodile lähemal ja ei vaja täiendavat analüüsi.
  • Turvalisus. Kompileeritud koodi on raskem tagurpidi insenerida kui kompileerimata lähtekoodi, sest sellel puudub loetavus ja abstraktsioon, mis on nagu kõrgetasemelistel keeltel. Lisaks parandavad fuzzing-tööriistad kompileeritud koodi võimet vastu seista tagurpidi inseneritööle.
  • Stabiilsus. Kontrolli oma koodi süntaksivigade, tüübi turvalisuse ja muude probleemide suhtes kompileerimise ajal. Nende vigade avastamisega ehituse ajal saab paljud vead koodis eemaldada.
  • Koostalitlusvõime. Kuna MSIL kood toetab mistahes .NET keelt, on võimalik kasutada koodis algselt teistes keeltes kirjutatud assemble. Näiteks, kui kirjutad ASP.NET veebilehte C#-s, saad lisada viite .dll failile, mis on kirjutatud Visual Basicus.


ASP.NET Core eelkompileeritud

Eelkompileeritud

Eelkompileerimine on ASP .Net Core'i vaikimisi viis. Avaldamise ajal on kõik Razori vaated süsteemis vaikimisi eelkompileeritud. Kompileeritud vaate DLL-i nimetatakse ühtlaselt xxx.PrecompiledViews.dll või xxx.Views.dll

Dünaamiline kompileerimine

Kogu projekti konfigureerimine dünaamiliseks kompileerimiseks on lihtne, lihtsalt lisa konfiguratsiooniprojekt MvcRazorCompileOnPublish väärtusega false



ASP.NET Veebilehe eelkoostamine

Me kasutame Visual Studiot veebilehe avaldamiseks järgmistel viisidel:




Valiku "Luba uuendused sellele eelkompileeritud saidile" tähendus Kui avaldame .Net veebiprojekti, siis üldiselt kõik . CS-fail, mis genereerib automaatselt DLL dünaamilise lingiteegi, mis kaitseb veebisaidi lähtekoodi väga hästi, kuna serveripoolne kood paigutatakse tavaliselt . Kuna CS-failis olevad DLL-failid genereeritakse kõik ja laaditakse need serverisse, ei saa teised neid lihtsalt avada!

Kuid teised failid, nagu ashx, aspx ja muud failid, mis neis on, on see, mis see on, teised saavad neid faile avada ja vaadata, kuigi teised ei näe CS-koodi, kuid näevad siiski HTML-koodi või mõningaid serveri juhtnuppe ja seotud atribuute ASPX-failis; Fail nagu ashx on samaväärne CS-failiga ja selle sees olev kood on kergesti nähtav;

Seega, . CS-failid on turvalised, kuid ASPX, ashx ja teised failid ei ole turvalised; Kas on võimalik muuta serverisse üles laaditud veebifailid ohutuks? On olemas viis, st avaldamisel ei tohi märkida "Luba uuendusi sellele eelkompileeritud saidile";

Kontrolli Luba uuendusi sellele eelkompileeritud saidile

Kui sa märgid veebi avaldamisel "Luba uuendada seda eelkompileeritud saiti", siis tulemus on selline: kogu veebilehefail, välja arvatud kõik CS-failid, mis on kompileeritud DLL-failideks, teised failid ja originaal, ei muutu, mis sees on või mis, kui teised avavad selle Notepadi kaudu, on koodi, HTML-koodi jne teiste jaoks kohe nähtavad.

Lisaks, kui kasutajad esimest korda teatud lehte külastavad, tuleb need kompileerida, et leida vigu, ja kui vigu pole, saab neid tavapäraselt kasutada, nii et kiirus muutub suhteliselt aeglaseks. Järgnevad külastused on tavalised;

Eemalda valik "Luba uuendusi sellele eelkompileeritud saidile"

Kui sa ei märgi veebi avaldamisel "Luba uuendada seda eelkompileeritud saiti", siis tulemus on järgmine: 1. Kõik veebilehel olevad CS-failid kompileeritakse DLL-failideks; 2. Lisaks cs-failile kompileeritakse koos ka teisi faile, nagu ASPX, ASHX ja teisi faile, ning iga fail genereerib vastava *.kompileeritud faili BIN kataloogis;

Pärast seda, kui vaatad ASPX-i, ASHX-i ja teisi faile märkmiku kaudu, ei näe sa neis koodi, isegi HTML-koodi märgistus pole nähtav, ava selline fail, seal on ainult üks tekstirida, sisu on "See on märgistusfail, mille genereerib eelkompileeritud tööriist, seda ei tohiks kustutada!", ja nende failide suurus on 1kb;

Kui proovid avada veebilehte, leiad, et välja arvatud esimene leht pärast projekti algust, mis võtab ikkagi 1~2 sekundit (ilma E-ta), avanevad iga teise lehekülje esimene kord koheselt (EF-i esimene aeglus jääb selle artikli raamidest välja). See paneb mind tundma, et olen hiljaks jäänud eelkompileeritud versiooni vaatama!

Siin ütlen salaja, et Vaadete kataloogi kustutamine ei mõjuta veebilehe tavapärast avamist~ Miks sa ei lase sellel kustutada, me ei julge küsida ega julge seda kustutada.

Eesmärk saavutati ja oli ka mõned tagajärjed, mida tuli lahendada, näiteks segadus prügikasti kataloogis.

Vali "Ära ühenda." Loo iga lehe ja kontrolli jaoks eraldi assambleed", ning tulemuseks on palju rohkem App_Web_*.dll faile binis.



Väljalaske hetkel genereerib projekti juur PrecompiledApp.config faili. Sisu on järgmine:



PrecompiledApp.config faili kasutatakse rakenduse juurutamise jälgimiseks ja selle jälgimiseks, kas ASP.NET peab päringu ajal faile kompileerima.




Eelmine:C# 8.0 uute funktsioonide ja teadmiste punktide selgitus
Järgmine:EF DbContext garanteerib, et kontekst on unikaalne
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com