Non so davvero da dove cominciare con questa domanda, ma il sito su cui sto lavorando a volte ha dei carichi di pagina veramente lenti. Soprattutto dopo aver fatto una build, ma non sempre. Di solito devo aggiornare la pagina 5-10 volte prima che si presenti effettivamente. Immagino che sto cercando di vedere esattamente dove dovrei cominciare a guardare.ASP.NET MVC 3 Il caricamento del sito è estremamente lento
ASP.NET MVC 3 Ninject automapper Entity Framework Codice First 4.1 SQL Server 2008 Razor
AGGIORNAMENTI
Per quanto riguarda alcune delle domande, si può fare questo carico a lungo su ogni pagina, ma dopo si carica abbastanza velocemente su tutte le pagine.
Dopo aver postato questo e aver ricevuto le risposte, ho avviato l'applicazione e ancora si sta caricando e probabilmente non verrà mai caricata a meno che non clicco su ricarica nel browser.
Nessun caching ei modelli EF non sono enormi.
Sto usando Razor e Visual Studio 2010 con 6 GB di memoria e un processore I7.
Sto usando IIS Express e il server Web predefinito durante il debug. Lo fa anche su IIS7 sul server principale.
Posso guardare nel MVC Profiler e Glimpse per vedere cosa riesco a trovare.
Di seguito, ho un codice che viene eseguito quando raggiunge la home page. Direi che non carica mai quando avvio il server per la prima volta. Metto un punto di rottura al modello var che non viene mai colpito. Se ricarico la pagina, allora lo fa.
public ActionResult Index()
{
var model = new HomeViewModel();
model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty);
return View(model);
}
Di seguito è riportata anche la configurazione del 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();
}
}
Ho bisogno di ulteriori dettagli. È questo per colpire la prima pagina? Ogni pagina? Solo alcune pagine? Succede costantemente o sporadicamente? – Lester
Quanto è grande il tuo modello EF? C'è qualche caching nella tua applicazione? È soprattutto dopo la build o sempre quando si accede all'applicazione dopo la build per la prima volta (riavvio dell'applicazione)? –
Potrebbe anche essere dovuto a una macchina lenta. Quanta memoria hai? Quanti core della CPU? È un computer portatile o una workstation? – danludwig