Tôi thực sự không biết bắt đầu từ đâu với câu hỏi này, nhưng trang web tôi đang làm việc vào những thời điểm có tải trang thực sự chậm. Đặc biệt là sau khi xây dựng, nhưng không phải lúc nào cũng vậy. Tôi thường phải làm mới trang 5-10 lần trước khi nó thực sự xuất hiện. Tôi đoán tôi đang cố gắng để xem chính xác nơi tôi nên bắt đầu tìm.ASP.NET MVC 3 Tải trang web cực kỳ chậm
ASP.NET MVC 3 Ninject AutoMapper Entity Framework Mã Đầu tiên 4.1 SQL Server 2008 Razor
CẬP NHẬT
Về một số câu hỏi, nó có thể làm bốc dài này trên tất cả các trang, nhưng sau khi tải nó khá nhanh trên tất cả các trang.
Sau khi đăng bài này và nhận được trả lời của bạn, tôi đã khởi động ứng dụng và nó vẫn đang tải và có thể sẽ không bao giờ tải trừ khi tôi nhấp vào tải lại trên trình duyệt.
Không có bộ nhớ đệm và các mô hình EF không lớn.
Tôi đang sử dụng Razor và Visual Studio 2010 với bộ nhớ 6 GB và bộ xử lý I7.
Tôi đang sử dụng IIS Express và máy chủ web mặc định khi gỡ lỗi. Nó cũng làm điều này trên IIS7 trên máy chủ chính.
Tôi có thể xem xét Hồ sơ MVC và thoáng nhìn để xem những gì tôi có thể tìm thấy.
Dưới đây tôi có một số mã này chạy khi nó truy cập trang chủ. Tôi sẽ nói nó không bao giờ tải khi tôi lần đầu tiên khởi động máy chủ. Tôi đặt một điểm break tại mô hình var mà không bao giờ bị đánh. Nếu tôi tải lại trang thì có.
public ActionResult Index()
{
var model = new HomeViewModel();
model.RecentHeadlines = _headlineService.GetHeadlines(1, Config.RecentHeadlinesPageSize, string.Empty);
return View(model);
}
Dưới đây là thiết lập văn bản dữ liệu của tôi.
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();
}
}
Cần thêm một số chi tiết. Đây có phải là để đánh trang đầu tiên không? Mỗi trang? Chỉ một số trang nhất định? Xảy ra một cách nhất quán hoặc không thường xuyên? – Lester
Mô hình EF của bạn lớn cỡ nào? Có bộ nhớ đệm nào trong ứng dụng của bạn không? Có phải đặc biệt là sau khi xây dựng hoặc luôn luôn khi bạn truy cập vào ứng dụng sau khi xây dựng lần đầu tiên (khởi động lại ứng dụng)? –
Cũng có thể do máy chậm. Bạn có bao nhiêu kỷ niệm? Có bao nhiêu lõi CPU? Nó là một máy tính xách tay, hoặc một máy trạm? – danludwig