Cuando hay demasiadas páginas en un proyecto, IIS se inicia y la web es muy lenta cuando la abres por primera vez, porque el proyecto no está precompilado en el momento de su lanzamiento, sino que se compila dinámicamente cuando el usuario visita la página web. Si quieres mejorar el rendimiento de tu sitio actual y realizar comprobaciones de errores, es necesario seleccionar "Precompilar durante la liberación" cuando publiques tu proyecto.
Introducción
Para proyectos pequeños, publicar según la configuración predeterminada puede básicamente cumplir con la operación normal: la primera página se abre en 56 segundos (dependiendo de la configuración del servidor), y la primera apertura de otras páginas se completa básicamente en 12 segundos, no la primera apertura instantánea.
Una vez que las funciones del proyecto se vuelven complejas y aumenta el número de archivos, se tardarán más de 30 segundos en abrir la primera página en la primera ejecución tras la publicación, y unos 10 segundos en abrir otras páginas, no en la primera apertura instantánea.
Esto se debe a que el proyecto no está precompilado en el momento del lanzamiento, sino que se compila dinámicamente cuando el usuario accede a la página web, y una vez que se recicla el pool de aplicaciones o se cambian los archivos del proyecto, se recompila y vuelve a pasar por una "primera vez" lenta, lo cual es intolerable.
Ventajas de la precompilación
- Actuación. El código compilado se ejecuta mucho más rápido que lenguajes de scripting como ECMAScript o VBScript porque es una representación más cercana al código máquina y no requiere análisis adicional.
- Seguridad. El código compilado es más difícil de descifrar que el código fuente sin compilar porque carece de la legibilidad y abstracción que tienen los lenguajes de alto nivel. Además, las herramientas de fuzzing mejoran la capacidad del código compilado para resistir el procesamiento de ingeniería inversa.
- Estabilidad. Revisa tu código en busca de errores de sintaxis, problemas de seguridad de tipos y otros problemas en tiempo de compilación. Al detectar estos errores en tiempo de compilación, muchos errores pueden eliminarse en el código.
- Interoperabilidad. Dado que el código MSIL soporta cualquier lenguaje .NET, es posible usar ensambladores originalmente escritos en otros lenguajes dentro del código. Por ejemplo, si estás escribiendo ASP.NET página web en C#, puedes añadir una referencia a un archivo .dll escrito en Visual Basic.
ASP.NET Core precompilado
Precompilado
La precompilación es la forma predeterminada para ASP .Net Core. En el momento de la publicación, todas las vistas de Razor en el sistema están precompiladas por defecto. La DLL de vista compilada se denomina uniformemente xxx.PrecompiledViews.dll o xxx.Views.dll
Compilación dinámica
Es fácil configurar todo el proyecto a compilación dinámica, solo hay que añadir un proyecto de configuración MvcRazorCompileOnPublish con un valor de false
ASP.NET Precompilación de la página web
Utilizamos Visual Studio para publicar un sitio web de las siguientes maneras:
El significado de la opción "Permitir actualizaciones a este sitio precompilado" Cuando publicamos un proyecto web .Net, en general, todos los archivos . CS, que generará automáticamente una biblioteca de enlaces dinámicos DLL, que puede proteger muy bien el código fuente del sitio web, porque el código del lado del servidor generalmente se coloca en . Como los archivos DLL del archivo CS se generan todos y luego los suben al servidor, ¡los demás no pueden abrirlos fácilmente!
Sin embargo, otros archivos, como ashx, aspx y otros archivos, lo que contiene es lo que es, otros pueden abrir estos archivos para verlos, aunque otros no pueden ver el código de CS, pero sí pueden ver el código HTML o algunos controles del servidor y atributos relacionados en el archivo ASPAC; Un archivo como ashx es equivalente a un archivo CS, y el código que contiene puede verse fácilmente;
Por lo tanto. Los archivos de CS son seguros, pero ASPX, ashx y otros archivos no lo son; Entonces, ¿hay alguna forma de hacer que los archivos web subidos al servidor sean seguros? Hay una forma, es decir, al publicar, no marcar "Permitir actualizaciones en este sitio precompilado";
Consulta actualizaciones de Permitir en este sitio precompilado
Si marcas "Permitir actualizar este sitio precompilado" al publicar la web, el resultado es este: el archivo completo del sitio web, excepto todos los archivos de CS compilados en archivos DLL, otros archivos y el original no tiene cambios, lo que hay dentro ni qué, mientras otros lo abran desde el Bloc de Notas, el código, código HTML, etc. que hay dentro puede ser visto por otros de un vistazo rápido.
Además, cuando los usuarios visitan por primera vez una página concreta, deben compilarse para encontrar errores y, si no hay errores, pueden accederse normalmente, por lo que la velocidad será relativamente lenta. Las visitas después de eso son normales;
Desmarca "Permitir actualizaciones en este sitio precompilado"
Si no seleccionas "Permitir actualizar este sitio precompilado" al publicar la web, el resultado es el siguiente: 1. Todos los archivos de CS en la web se compilan en archivos DLL; 2. Además del archivo cs, otros archivos, como ASPX, ASHX y otros archivos, también se compilan juntos, y cada archivo genera un archivo *.compiled correspondiente en el directorio BIN;
Después de eso, si ves ASPX, ASHX y otros archivos a través del bloc de notas, no verás ningún código en ellos, ni siquiera el marcado de código HTML es visible, abre un archivo así, solo hay una línea de texto, el contenido es "Este es un archivo de marcado generado por la herramienta precompilada, ¡no debe eliminarse!", y el tamaño de estos archivos es de 1kb;
Si intentas abrir una página web, verás que, salvo la primera página después de que empieza el proyecto, que aún lleva 1~2 segundos (sin EF), la primera vez que cada otra página se abre instantáneamente (la primera lentitud de EF está fuera del alcance de este artículo). ¡Esto me hace sentir que llego tarde a ver precompilados!
Aquí te digo en secreto que borrar el directorio Vistas no afectará la apertura normal de la página web~ ¿Por qué no dejas que se borre? No nos atrevemos a preguntar y no nos atrevemos a borrarlo.
El objetivo se había alcanzado, y había algunos efectos secundarios que debían resolverse, como el desorden en el directorio de contenedores.
Selecciona "No fusionar". Crea ensamblajes separados para cada página y control", y el resultado es muchos más archivos App_Web_*.dll en bin.
En el momento del lanzamiento, la raíz del proyecto genera un archivo PrecompiledApp.config. El contenido es el siguiente:
El archivo PrecompiledApp.config se utiliza para rastrear cómo se despliega la aplicación y si ASP.NET necesita compilar archivos en el momento de la solicitud. |