www visual update tools studio packs net mvc4 mvc language instalar asp performance asp.net-mvc-3 entity-framework-4.1 ninject

performance - visual - mvc 4+



La carga del sitio ASP.NET MVC 3 es extremadamente lenta (5)

Depende de lo que sucedió en su ejecución anterior; a veces, si lanza un error y no borra eso, entonces tendrá problemas al ejecutar la aplicación. Ayuda reiniciar el navegador cada vez que compila si hubo un error.

Sin embargo, esto podría ser un problema de almacenamiento en caché. Es posible que su base de datos esté almacenando en caché debido a la eliminación de contexto mal mantenida. Esto haría que las búsquedas se ejecuten cada vez más rápido a medida que se encuentran en las páginas. Asegúrese de llamar siempre a .dispose () cuando termine con las transacciones de su base de datos.

Realmente no sé por dónde empezar con esta pregunta, pero el sitio en el que estoy trabajando a veces tiene algunas cargas de página realmente lentas. Especialmente después de hacer una construcción, pero no siempre. Normalmente tengo que actualizar la página 5-10 veces antes de que realmente aparezca. Creo que estoy tratando de ver dónde exactamente debería comenzar a mirar.

ASP.NET MVC 3 Ninject AutoMapper Entity Framework Code First 4.1 SQL Server 2008 Razor

ACTUALIZACIONES

En cuanto a algunas de las preguntas, puede hacer esta carga larga en cada página, pero después de que se carga es bastante rápido en todas las páginas.

Después de publicar esto y obtener sus respuestas, inicié la aplicación y aún se está cargando y probablemente nunca se cargará a menos que haga clic en volver a cargar en el navegador.

Sin almacenamiento en caché, y los modelos EF no son enormes.

Estoy usando Razor y Visual Studio 2010 con 6 GB de memoria y un procesador I7.

Estoy usando IIS Express y el servidor web predeterminado cuando se depura. También hace esto en IIS7 en el servidor principal.

Puedo consultar MVC Profiler y Glimpse para ver qué puedo encontrar.

A continuación, tengo un código que se ejecuta cuando llega a la página de inicio. Yo diría que nunca se carga cuando inicio el servidor por primera vez. Puse un punto de quiebre en el modelo var que nunca se golpea. Si vuelvo a cargar la página, entonces lo hace.

public ActionResult Index() { var model = new HomeViewModel(); model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty); return View(model); }

Debajo está mi configuración del contexto de datos también.

public class DatabaseFactory : Disposable, IDatabaseFactory { private DataContext _dataContext; public DataContext Get() { return _dataContext ?? (_dataContext = new DataContext()); } protected override void DisposeCore() { if (_dataContext != null) _dataContext.Dispose(); } } public class Disposable : IDisposable { private bool isDisposed; ~Disposable() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (!isDisposed && disposing) { DisposeCore(); } isDisposed = true; } protected virtual void DisposeCore() { } } public class UnitOfWork : IUnitOfWork { private readonly IDatabaseFactory _databaseFactory; private DataContext _dataContext; public UnitOfWork(IDatabaseFactory databaseFactory) { _databaseFactory = databaseFactory; } protected DataContext DataContext { get { return _dataContext ?? (_dataContext = _databaseFactory.Get()); } } public void Commit() { DataContext.Commit(); } }


gracioso - He notado algo similar una vez con unity y mvc pero el problema creo que se resolvió solo. También puede probar el generador de perfiles de hormigas para ver si el problema está fuera de MVC.

Si permite que una sola solicitud se presente allí (sin solicitar más de 5 veces), ¿qué sucede? Deje que se ejecute una sola solicitud: ¿ALGUNO de su código es alcanzado? (configuración de inicio de sesión log4net, nlog, etc.) para ejecutar application_start, etc. para ver si se está llamando a algún código después de la compilación.


Parece que podría ser un problema con el reciclaje de aplicaciones de IIS si lo está experimentando después de compilaciones o después de períodos de inactividad.

Para ayudar con los tiempos de espera de AppPool, puede utilizar un archivo por lotes que creé para ayudar a mitigar el problema.

Eso no resolverá el problema para usted después de las compilaciones nuevas porque su aplicación ASP.NET MVC debe compilarse JIT en la primera ejecución. Si realmente está ansioso por eliminar ese problema, puede usar la precompilación de ASP.NET .



Comenzaría comprobando los tiempos de espera establecidos en IIS para que el proceso se recicle.

También soy un gran admirador del MVC Mini-Profiler, que podría mostrarle exactamente cuánto tiempo están tomando varias partes de la carga de su página, sin duda, échele un vistazo.

Editar:

Vale la pena señalar que el proyecto Glimpse también es ideal para esta tarea en estos días.