¿Por qué un sitio web ASP.Net se carga lentamente? [cerrado]

9

Como anécdota, he visitado muchos sitios web .aspx que requieren una cantidad significativa de tiempo de carga para cada página.

¿Mi experiencia es única?

Si no es así, ¿por qué un sitio web ASP.Net se carga lentamente?

Editar: ahora es aproximadamente 7 años después (29/12/2017). La buena noticia es que ya no veo mucho este problema, quizás porque Google comenzó a penalizar los sitios que se cargan muy lentamente. Ahora uso ASP.NET MVC con buenos resultados, actualmente ejecutándose en servidores virtuales privados Vultr (Azure era demasiado lento cuando lo probamos). Algunos de los peores delincuentes que veo ahora son los sistemas CMS como Wordpress y Drupal, probablemente ejecutándose en hardware demasiado lento o poco especificado para la cantidad de tráfico que recibe el sitio. -HK1

HK1
fuente
10
Podría haber muchos factores en juego. El sitio que está utilizando en este momento está construido en .NET, y generalmente es muy rápido (menos tiempos de inactividad / períodos de mantenimiento). Los desarrolladores de esos sitios podrían estar enviando toneladas de datos a usted, conexiones lentas, servidores sobrecargados, etc., etc., etc. También podría ser una percepción en juego.
wkl
44
@birryree Debería agregar su comentario como respuesta, ya que casi le da en el clavo allí.
Adam Lear

Respuestas:

22

Se me ocurren cinco posibilidades (aparte de algunas técnicas avanzadas de almacenamiento en caché y demás):

Jesse C. Slicer
fuente
¿No puedes encontrar un ejemplo?
JeffO
1
ViewState también juega un papel en estos problemas.
Erin
1
1) En otras palabras, ¿ASP.NET usa más recursos que asp classic?
HK1
1
Creo que otro problema común que no se menciona en su gran respuesta (o cualquiera de las otras respuestas aquí) es el acceso lento a la base de datos. He utilizado varias empresas de alojamiento web "económicas" (soluciones de red, sin mencionar los nombres) y he tenido algunas ralentizaciones bastante malas debido al acceso a la base de datos (SQL Server).
HK1
8

Como aparentemente esta podría ser una respuesta digna.

Podría haber muchos factores en juego. El sitio que está utilizando en este momento está construido en .NET, y generalmente es muy rápido (menos tiempos de inactividad / períodos de mantenimiento).

Los desarrolladores de esos sitios a los que visita podrían estar enviando toneladas de datos, conexiones lentas, servidores sobrecargados, etc., etc., etc. También podría ser una percepción en juego. Además, ¿tal vez javascript loco en el juego y estás ejecutando IE? O flash?

wkl
fuente
4

Si realmente no sabe lo que está haciendo, ASP.NET WebForms le permite crear una aplicación web colocando controles en un formulario, incluso llegando a ocultar la naturaleza sin estado de http. Funciona, pero ese tipo de desarrollo nunca producirá un código eficiente, especialmente si su capa de acceso a datos involucra consultas generadas que seleccionan todo desde una base de datos SQL Express sin índices.

Existen muchos sitios web rápidos de asp.net, desarrollados por personas que entienden cómo funcionan realmente las aplicaciones web. Eso incluye este sitio: utiliza ASP.NET MVC que proporciona mucho más control sobre el manejo de solicitudes individuales y no muestra la extensión .aspx.

Tom Clarkson
fuente
3

Solo especulamos aquí porque he notado lo mismo. Sospecho que los sitios .asp tienden ( tenga en cuenta que la palabra tiende ) se alojan por sí mismos en los servidores de una empresa, en lugar de alojarse en o en centros de datos. Por lo tanto, a menudo se ejecutan en hardware y conexiones que no están realmente diseñadas para el tráfico web de alta velocidad. Sospecho que los sitios impulsados ​​por fusión en frío también sufren de esto.

Gran maestro B
fuente
2

Cuando se carga un sitio web (evento application.start), lleva tiempo cargar todo en la memoria. Dependiendo de la configuración de IIS, después de unos 20-30 minutos de inactividad, se descargará. No he encontrado una forma decente de mantener la aplicación ejecutándose constantemente sin tener algún servicio GETcada 10 minutos o más.

Un backend / capa de datos mal diseñado puede hacer que todo funcione lento (sin importar qué tan rápido lo ejecute la computadora). La creación de perfiles lo ayudará a identificar dónde están los problemas.

Tangurena
fuente
1

Ciertamente te estás imaginando esto. :)

Muchos factores entran en juego con cualquier software. La arquitectura, la redundancia del flujo del código, la calidad del código, etc. Demasiados para comenzar a enumerarlos.

¿Quieres pruebas de que ASP es bueno para el uso a nivel empresarial? Este mismo sitio (y todos los sitios web de SE) están hechos con ASP.Net, específicamente MVC.

¿Cuándo fue la última vez que este sitio fue lento? He estado aquí por más de un año y nunca he notado que las cosas avanzan a pesar de su enorme base de usuarios.


fuente
0

El estado de vista realmente puede ralentizar las devoluciones. Si tiene listas desplegables grandes en una página, no debe usar el estado de vista en ellas.

El viewstate te permite fingir que estás trabajando en una aplicación de formularios win con estado. Eso puede meterte en problemas a veces.

Lord Tydus
fuente
0

Todo lo anterior es probablemente cierto. Sin embargo, el factor más importante que afectó el rendimiento en el sitio ASP.NET en el que trabajé fue que todo lo relacionado con él era antiguo. La versión de .NET Framework, los servidores, la infraestructura de la base de datos y el código en sí estaban envejeciendo mal.

Sospecho que muchos sitios ASP.NET tienden a ser sitios corporativos. Estos no reciben mucho amor, ya que tienden a funcionar . La gente no los reescribe hasta que tienen que hacerlo, lo que a menudo es mucho tiempo en el futuro.

Sé que el sitio con el que trabajé que usaba ASP.NET obtuvo una gran velocidad con solo pasar a la versión más reciente del marco, que tenía JITing mucho más eficiente y valores predeterminados de almacenamiento en caché.

La otra cosa que he visto es que muchos sitios ASP.NET no saben cómo escalar correctamente. No tienen una configuración de equilibrio de carga adecuada porque diseñar su sitio para que funcione correctamente con jardines web no es común ni está bien documentado en la comunidad. Si no diseña su sitio para huertos web desde el principio, no puede usar el mecanismo de escalabilidad incorporado que tiene IIS. El equilibrio de carga de software con Windows NLB no es muy común y es complejo de administrar. (Esto se remonta al hecho de que ASP.NET tiende a ser un software corporativo, y tiende a ser administrado por la compañía que ejecuta el sitio en lugar de los profesionales de TI que saben cómo configurar estas cosas correctamente).

El equilibrio de carga de hardware con F5 es muy costoso, pero parece ser el mecanismo más común y simple para escalar los sitios ASP.NET dentro de las redes corporativas. Creo que entre la multitud de código abierto, la expectativa es que incorpore el equilibrio de carga desde el principio utilizando herramientas de código abierto disponibles de forma gratuita que se escalan automáticamente en función del uso. Esto no es común en el mundo ASP.NET por lo que he visto.

Caso
fuente