Я действительно не знаю, с чего начать с этого вопроса, но сайт, над которым я работаю, иногда очень медленно загружается. Особенно после сборки, но не всегда. Обычно мне приходится обновлять страницу 5-10 раз, прежде чем она действительно появится. Думаю, я пытаюсь понять, с чего именно мне следует начать искать.
ASP.NET MVC 3 Ninject AutoMapper Entity Framework Code First 4.1 SQL Server 2008 Razor
ОБНОВЛЕНИЯ
Что касается некоторых вопросов, он может выполнять такую долгую загрузку на каждой странице, но после загрузки довольно быстро на всех страницах.
После публикации этого сообщения и получения ваших ответов я запустил приложение, оно все еще загружается и, вероятно, никогда не загрузится, если я не нажму кнопку перезагрузки в браузере.
Нет кеширования, и модели EF невелики.
Я использую Razor и Visual Studio 2010 с 6 ГБ памяти и процессором I7.
При отладке я использую IIS Express и веб-сервер по умолчанию. Он также делает это в IIS7 на главном сервере.
Я могу заглянуть в MVC Profiler и Glimpse, чтобы узнать, что я могу найти.
Ниже у меня есть код, который запускается, когда попадает на домашнюю страницу. Я бы сказал, что он никогда не загружается, когда я впервые запускаю сервер. Я поставил точку останова на модели var, которая никогда не срабатывает. Если я перезагружу страницу, то так и будет.
public ActionResult Index()
{
var model = new HomeViewModel();
model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty);
return View(model);
}
Ниже также представлена моя настройка контекста данных.
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();
}
}