150 votos

Cómo mejorar el rendimiento MVC aplicación ASP.NET

¿Cómo mejorar el rendimiento de la aplicación ASP.NET MVC?

195voto

George Stocker Puntos 31258

Una lista de posibles fuentes de mejora son las siguientes:

General

  • Hacer uso de un analizador para descubrir las pérdidas de memoria y problemas de rendimiento en la aplicación. personalmente sugiero dotTrace
  • Ejecuta el sitio en modo de Lanzamiento, no el modo de Depuración, cuando en producción, y también durante la creación de perfiles de rendimiento. Modo de lanzamiento es mucho más rápido. Modo de depuración puede ocultar problemas de rendimiento en su propio código.

El almacenamiento en caché

  • Uso CompiledQuery.Compile() de forma recursiva, evitando recompilación de su consulta expresiones
  • Caché de no-propensos-a-cambio el contenido utilizando OutputCacheAttribute para guardar innecesarios y acción ejecuciones
  • Uso de las cookies para la que se accede con frecuencia no información sensible
  • Utilizar ETags y vencimiento a Escribir tu personalizada ActionResult métodos si es necesario
  • Considere el uso de la RouteName a organizar sus rutas y, a continuación, utilizarlo para generar tus enlaces, y trate de no usar el árbol de expresión basado en ActionLink método.
  • Considerar la implementación de una ruta resolución de la estrategia de almacenamiento en caché
  • Poner código repetitivo dentro de su PartialViews, evitar hacerla xxxx veces: si al final llama a la misma parciales de 300 veces en el mismo punto de vista, probablemente hay algo de malo con eso. Explicación Y Puntos De Referencia

Enrutamiento

Seguridad

  • Usar la Autenticación de Formularios, Mantener a los que accede con frecuencia los datos sensibles en el vale de autenticación

DAL

Equilibrio de carga

  • Utilizar servidores proxy inversos, para difundir la carga del cliente a través de su instancia de la aplicación. (Stack Overflow utiliza HAProxy (MSDN).

  • Uso Asincrónico Controladores para implementar acciones que dependen de recursos externos de procesamiento.

Lado del cliente

  • Optimice su lado del cliente, el uso de una herramienta como YSlowpara sugerencias para mejorar el rendimiento
  • Uso de AJAX para actualizar los componentes de la interfaz de usuario, evite el conjunto de la actualización de la página cuando sea posible.
  • Considere la posibilidad de implementar un pub-sub de arquitectura-es decir. Cometa - para la entrega de contenido en contra de recarga basado en los tiempos de espera.
  • Mover gráficos y la generación de gráficos de la lógica para el lado del cliente, si es posible. La generación de gráficos es una actividad cara. Aplazar para el lado del cliente en el servidor a partir de un carga innecesaria, y le permite trabajar con gráficos a nivel local sin hacer una nueva solicitud (es decir. Flex charting, jqbargraph, MoreJqueryCharts).
  • El uso de CDN para los scripts y contenido de los medios para mejorar la carga en el lado del cliente (es decir. Google CDN)
  • Minify -Compilar- tu JavaScript con el fin de mejorar su tamaño de secuencia de comandos
  • Mantener la cookie de tamaño pequeño, ya que las cookies se envían al servidor en cada petición.

Configuración Global

  • Si utiliza hojas de Afeitar, agregue el código siguiente en tu global.asax.cs, por defecto, Asp.Net MVC renders con un aspx motor y una navaja de afeitar del motor. Esto sólo se utiliza la RazorViewEngine.

    ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new RazorViewEngine());

  • Añadir gzip (HTTP compresión) y estática de la caché (imágenes, css, ...) en el web.config <system.webServer> <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/> </system.webServer>

  • Quitar sin utilizar HTTP Módulos
  • Lavar el HTML, tan pronto como se genera (en el web.config) y desactivar viewstate si usted no la está utilizando <pages buffer="true" enableViewState="false">

10voto

LukLed Puntos 18010

Código de Escalador y esta entrada de blog proporcionar detallada de las formas de aumentar el rendimiento de la aplicación.

Consulta compilado aumentará el rendimiento de la aplicación, pero no tiene nada en común con ASP.NET MVC. Se aumentará la velocidad de cada db de la aplicación, así que no es realmente acerca de MVC.

8voto

Propuesta básica es seguir RESTO de los directores y de los siguientes puntos vínculos de algunos de estos principios a la Asp.Net MVC framework:

  1. Hacer tus controladores apátridas - esto es más de un"Web performance / escalabilidad sugerencia (en contraposición a las micro/máquina de nivel de rendimiento) y un diseño más importante decisión que podría afectar a sus aplicaciones futuro - especialmente en el caso de que se convierte en popular o si necesitas algo de tolerancia a fallos, por ejemplo.
    • No utilice Sesiones
    • No utilice tempdata - que utiliza las sesiones de
    • No intente 'caché' todo 'prematura'.
  2. Usar La Autenticación De Formularios
    • Mantener a los que accede con frecuencia los datos sensibles en el vale de autenticación
  3. Uso de las cookies para la que se accede con frecuencia no información sensible
  4. Hacer que sus recursos cacheable con en la web
  5. Compilar el código Javascript. Hay una biblioteca para hacerlo bien. (seguro que hay otros también)
  6. El uso de Cdn - especialmente para los grandes archivos multimedia, y así sucesivamente.
  7. Considerar los diferentes tipos de almacenamiento para sus datos, por ejemplo. archivos de clave/valor en las tiendas, etc. - no sólo de SQL Server

7voto

Craig Stuntz Puntos 95965

Esto puede parecer obvio, pero ejecutar su sitio en modo de lanzamiento, no en modo de depuración, cuando en la producción, y también durante perfiles de rendimiento. Modo de disparo es mucho más rápido. El modo de depuración puede ocultar problemas de rendimiento en su propio código.

6voto

kd7 Puntos 16740

No una tierra destrozando la optimización, pero he pensado que me gustaría lanzar esta por ahí - Uso de CDN para jquery, etc.

Cita de ScottGu a sí mismo: El Microsoft Ajax CDN permite mejorar significativamente el rendimiento de ASP.NET los Formularios Web forms y ASP.NET MVC en aplicaciones que utilizan ASP.NET AJAX o jQuery. El servicio está disponible de forma gratuita, no requiere ningún tipo de registro, y se puede utilizar para uso tanto comercial como no comercial.

Incluso podemos usar la CDN para nuestro webparts en Moss que el uso de jquery.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: