2009-04-29 15 views
14

Estoy implementando un sitio web precompilado y combinado de todas las páginas utilizando Web Deployment Projects en Visual Studio 2008. Tenga en cuenta que todos los ensamblados y proyectos se han compilado en modo Release.<compilation debug = "true"> en el sitio web asp.net precompilado - ¿Importa?

Todas mis páginas están precompiladas en modo de lanzamiento. Entonces no serán recompilados, solo serán cargados por el tiempo de ejecución. En ese caso, cuando no se requiere la compilación de la página, la configuración <compilation debug="true"> en system.web hará alguna diferencia?

Respuesta

26

Mira la excelentes enlaces siguientes:

Básicamente:

  • Su código se ejecutará más lento debido a la sobrecarga de compatibilidad de depuración.
  • Las secuencias de comandos y las imágenes no se almacenan en caché en el lado del cliente porque no desea que las cosas se almacenen en caché en el desarrollo si constantemente realiza cambios y depuraciones.
  • No se agota el tiempo de espera de las solicitudes. De nuevo, cuando depure su código, no desea obtener un tiempo de espera de solicitud.

Ninguno de los anteriores es deseable. Encontrará más desventajas en los enlaces de arriba.

+1

Buena llamada, me olvidé de las diferencias de caché/tiempo de espera. –

+0

@Aras: todas mis páginas están precompiladas en modo de lanzamiento. Entonces no serán recompilados, solo serán cargados por el tiempo de ejecución. En ese caso, cuando la compilación de la página no es necesaria, ¿seguirá siendo la diferencia? –

2

De acuerdo con la documentation:

se utiliza

Especifica si se compile binarios de depuración en lugar de binarios al

Sin embargo, tener sólo refleja rápidamente a través de System.Web, puedo ver el indicador de depuración (directa o indirectamente) por la siguiente:

  • Runtime compilación (ASPX/ASCX/MASTER)
  • La generación de código de las capacidades del navegador de archivos
  • HttpDebugHandler
  • , que se utiliza durante una sesión de depuración

Como resultado, si su sitio se precompila no recibirán un impacto en el rendimiento. Sin embargo, como HttpApplication responderá al verbo DEBUG http, se abrirá a problemas de seguridad.

En resumen, establezca debug = false, incluso si su sitio está precompilado.

Editar: debug = true dará lugar a una actuación (véase la respuesta de Mehmet Aras) golpeó para almacenar en caché y no hay tiempo de espera de ejecución, pero no va a reducir la velocidad de ejecución de páginas compiladas.

2

A partir de la entrada en el blog ASP.Net – Never again fear publishing your website with debug=true:

  • La compilación de ASP.páginas de la red tarda más tiempo (como la compilación por lotes está desactivado)
  • Código normalmente ejecuta lento huella
  • memoria se incrementa
  • secuencias de comandos y las imágenes descargadas desde el controlador WebResources.axd no se almacenan en caché
  • Solicitudes no hacer el tiempo de espera (esto es malo, como en un entorno de producción no queremos que las solicitudes para ser pegadas de forma indefinida)

el artículo continúa recomienda ajustar el machine.config servidor de producción para garantizar modo de implementación al por menor se ve obligado que esencialmente significa depuración es siempre falso.

+0

¡Tengo una implementación precompilada en modo de lanzamiento! –

+1

Aún puede encontrar un impacto en el rendimiento, especialmente en relación con los dos últimos puntos anteriores. –

Cuestiones relacionadas