Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 31580|Risposta: 0

[Fonte] ASP.NET MVC5 viene rilasciato utilizzando la modalità precompilata, migliorando la velocità di caricamento e le prestazioni della pagina

[Copiato link]
Pubblicato il 22-08-2020 10:05:17 | | | |
Quando ci sono troppe pagine in un progetto, IIS si avvia e il sito web è molto lento quando lo apri per la prima volta, perché il progetto non è precompilato al momento del rilascio, ma viene compilato dinamicamente quando l'utente visita la pagina web. Se vuoi migliorare le prestazioni del sito esistente e effettuare il controllo degli errori, è necessario selezionare "Precompila durante il rilascio" quando pubblichi il progetto.

Introduzione

Per progetti piccoli, pubblicare secondo le impostazioni predefinite può praticamente rispettare il funzionamento normale: la prima pagina si apre in 56 secondi (a seconda della configurazione del server) e la prima apertura delle altre pagine si completa praticamente in 12 secondi, non la prima apertura istantanea.

Quando le funzioni del progetto diventano complesse e il numero di file aumenta, ci vorranno più di 30 secondi per aprire la prima pagina per la prima run dopo la pubblicazione, e circa 10 secondi per la prima apertura di altre pagine, non per la prima apertura istantanea.

Questo perché il progetto non è precompilato al momento del rilascio, ma viene compilato dinamicamente quando l'utente accede alla pagina web, e una volta che il pool di applicazioni viene riciclato o i file del progetto cambiati, verrà ricompilato e subirà di nuovo una lenta "prima volta", cosa intollerabile.

Vantaggi della precompilazione

  • Prestazione. Il codice compilato viene eseguito molto più velocemente rispetto a linguaggi di scripting come ECMAScript o VBScript perché rappresenta una rappresentazione più vicina al codice macchina e non richiede ulteriori analisi.
  • Sicurezza. Il codice compilato è più difficile da ingegnerizzare al contrario rispetto al codice sorgente non compilato perché manca della leggibilità e dell'astrazione che hanno i linguaggi di alto livello. Inoltre, gli strumenti di fuzzing migliorano la capacità del codice compilato di resistere al reverse engineering dell'elaborazione.
  • Stabilità. Controlla il tuo codice per errori di sintassi, problemi di sicurezza dei tipi e altri problemi durante la compilazione. Individuando questi errori durante la compilazione, molti errori possono essere eliminati nel codice.
  • Interoperabilità. Poiché il codice MSIL supporta qualsiasi linguaggio .NET, è possibile utilizzare assembly originariamente scritti in altri linguaggi nel codice. Ad esempio, se stai scrivendo ASP.NET pagina web in C#, puoi aggiungere un riferimento a un file .dll scritto in Visual Basic.


ASP.NET Core precompilato

Precompilato

La precompilazione è il metodo predefinito per ASP .Net Core. Al momento della pubblicazione, tutte le visualizzazioni Razor nel sistema sono precompilate di default. La DLL in vista compilata è uniformemente denominata xxx.PrecompiledViews.dll o xxx.Views.dll

Compilazione dinamica

È facile configurare l'intero progetto in compilazione dinamica, basta aggiungere un progetto di configurazione MvcRazorCompileOnPublish con il valore di false



ASP.NET Pre-compilazione del sito web

Utilizziamo Visual Studio per pubblicare un sito web nei seguenti modi:




Il significato dell'opzione "Consentire aggiornamenti a questo sito precompilato" Quando pubblichiamo un progetto web .Net, in generale, tutti i . CS, che genera automaticamente una libreria dinamica DLL, la quale può proteggere molto bene il codice sorgente del sito web, poiché il codice lato server è generalmente inserito in . Poiché i file DLL nel file CS vengono tutti generati e poi caricati sul server, gli altri non possono aprirli facilmente!

Tuttavia, altri file, come ashx, aspx e altri file, ciò che contiene è quello che è, altri possono aprire questi file per visualizzarli, anche se altri non possono vedere il codice CS, ma possono comunque vedere il codice HTML o alcuni controlli server e attributi correlati nel file ASBOX; Un file come ashx è equivalente a un file CS, e il codice in esso contenuto può essere facilmente visibile;

Pertanto, . I file CS sono sicuri, ma ASPX, ashx e altri file non sono sicuri; Quindi, c'è un modo per rendere sicuri i file web caricati sul server? C'è un modo, cioè, quando si pubblica, non selezionare "Consentire aggiornamenti a questo sito precompilato";

Controlla aggiornamenti Consentite a questo sito precompilato

Se selezioni "Consentire l'aggiornamento di questo sito precompilato" quando pubblichi il web, il risultato è questo: l'intero file del sito web, tranne tutti i file CS compilati in file DLL, altri file, e quello originale non ha cambiamenti, cosa c'è dentro, o cosa, finché gli altri lo aprono tramite Notepad, il codice, il codice HTML, ecc. all'interno possono essere visti dagli altri a colpo d'occhio.

Inoltre, quando gli utenti visitano per la prima volta una certa pagina, devono essere compilate per individuare bug, e poi, se non ci sono errori, possono essere accessibili normalmente, quindi la velocità diventerà relativamente lenta. Le visite dopo sono normali;

Deseleziona "Consenti aggiornamenti a questo sito precompilato"

Se non selezioni "Consentire l'aggiornamento di questo sito precompilato" quando pubblichi il web, il risultato è il seguente: 1. Tutti i file CS nel sito sono compilati in file DLL; 2. Oltre al file cs, vengono compilati insieme anche altri file, come ASPX, ASHX e altri file, e ogni file genera un corrispondente file *.compiled nella cartella BIN;

Dopodiché, se visualizzi ASPX, ASHX e altri file tramite il blocco note, non vedrai alcun codice al loro interno, nemmeno il markup del codice HTML è visibile; apri un file del genere, c'è solo una riga di testo, il contenuto è "Questo è un file di markup generato dallo strumento precompilato, non dovrebbe essere cancellato!", e la dimensione di questi file è 1kb;

Se provi ad aprire una pagina web, scoprirai che, tranne la prima pagina dopo l'inizio del progetto, che richiede comunque 1~2 secondi (nessun EF), la prima volta che ogni altra pagina si apre istantaneamente (la prima lentezza di EF va oltre lo scopo di questo articolo). Questo mi fa sentire come se fossi in ritardo per vedere i precompilati!

Qui ti dico segretamente che eliminare la directory Views non influenzerà l'apertura normale della pagina web~ Perché non lasciate che venga cancellato, non osiamo chiedere e non osiamo cancellarlo.

L'obiettivo era stato raggiunto e c'erano alcuni effetti successivi da risolvere, come il disordine nella cartella bin.

Seleziona "Non unire". Crea assembly separati per ogni pagina e controllo", e il risultato è molto più file App_Web_*.dll nel bin.



Al momento del rilascio, la radice del progetto genera un file PrecompiledApp.config. Il contenuto è il seguente:



Il file PrecompiledApp.config viene utilizzato per monitorare come l'applicazione viene distribuita e se ASP.NET necessario compilare eventuali file al momento della richiesta.




Precedente:Spiegazione delle nuove funzionalità e dei punti di conoscenza di C# 8.0
Prossimo:EF DbContext garantisce che il contesto sia unico
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com