Mik*_*ynn 20 performance ninject entity-framework-4.1 asp.net-mvc-3
我真的不知道从哪里开始这个问题,但我正在处理的网站有时会有一些非常慢的页面加载.特别是在完成构建之后,但并非总是如此.我通常必须在实际出现之前刷新页面5-10次.我想我正试图看看我应该从哪里开始看.
ASP.NET MVC 3 Ninject AutoMapper实体框架代码第一个4.1 SQL Server 2008 Razor
更新
关于一些问题,它可以在每个页面上进行长时间加载,但是在所有页面上加载相当快.
发布此并获得您的回复后,我启动了应用程序,它仍在加载,除非我在浏览器上单击重新加载,否则可能无法加载.
没有缓存,EF模型也不大.
我正在使用带有6 GB内存和I7处理器的Razor和Visual Studio 2010.
我正在调试时使用IIS Express和默认Web服务器.它也在主服务器上的IIS7上执行此操作.
我可以查看MVC Profiler和Glimpse,看看我能找到什么.
下面我有一些代码,当它到达主页时运行.我会说它在我第一次启动服务器时从不加载.我在var模型上设置了一个永不受到打击的断点.如果我重新加载页面,那么它.
public ActionResult Index()
{
var model = new HomeViewModel();
model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty);
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
下面是我的datacontext设置.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
scl*_*son 14
我首先检查IIS中设置的超时时间,以便进行回收.
我也是MVC Mini-Profiler的忠实粉丝,它可以准确地向您展示页面加载的各个部分需要多长时间,绝对可以看看它.
编辑:
值得注意的是,目前Glimpse项目对于这项任务也很有用.
听起来像IIS AppPool回收可能是一个问题,如果您在构建之后或在不活动时间之后遇到它.
要帮助处理AppPool超时,您可以使用我创建的批处理文件来帮助缓解此问题.
在新版本之后,这不会解决您的问题,因为您的ASP.NET MVC应用程序需要在首次运行时进行JIT编译.如果您真的渴望消除该问题,可以使用ASP.NET预补偿.
归档时间: |
|
查看次数: |
19811 次 |
最近记录: |