我们的网站有非常奇怪的问题。当我们在一天中第一次运行我们的站点时(这不是部署后的第一次),它运行速度非常慢,并且需要 5 分钟才能加载页面(任何浏览器),即使当时没有任何人连接到该站点。但是,一旦我们开始使用它,打开各种页面,它就会像魅力一样运行——我的意思是说非常快(不超过 4 秒),即使单个或多个用户连接到它。明确地说,如果站点保持空闲状态,则站点第一次表现不佳,但一旦我们开始使用它,它就会正常运行。我们正在使用以下内容来构建网站:
- MVC 4
- 点网框架 4.5
- 数据库:SQLAnywhere 和 SQL Server 2008(我们尝试使用这两个数据库来解决问题,但没有成功)
- Entity Framework 5.0 使用 Web API 模型,我们使用 jQuery 调用在页面上显示数据并在 DataTable 网格上显示它们 (http://www.datatables.net/)
- 托管在 IIS 7.5 上
注意:该站点几天前运行正常,但我们不知道在最近几次部署中出了什么问题(代码或托管设置等),但运行速度非常慢。我们已经尝试了一切,但现在我们需要您的专家指导。
提前谢谢了。
我在 global.asax.cs 中的代码是:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//ConfigureApi(GlobalConfiguration.Configuration);
GlobalConfiguration.Configuration.Filters.Add(new ModelValidationFilterAttribute());
FilterConfig.RegisterHttpFilters(GlobalConfiguration.Configuration.Filters);
BundleTable.EnableOptimizations = true;
}
protected void Session_Start(object src, EventArgs e)
{
SessionHelper.EnterPriceID = 1;
SessionHelper.CompanyID = 1;
SessionHelper.RoomID = 1;
SessionHelper.UserID = 1;
SessionHelper.RoomName = "Room1";
SessionHelper.UserName = "Admin";
SessionHelper.CompanyResourceFolder = SessionHelper.EnterPriceID.ToString() + "_" + SessionHelper.CompanyID.ToString();
eTurns.DTO.Resources.ResourceHelper.ResourceDirectoryPath = HttpContext.Current.Server.MapPath(@"\Resources\" + SessionHelper.CompanyResourceFolder) + @"\";
eTurns.DTO.Resources.ResourceHelper.ResourceBaseClassPath = eTurns.DTO.Resources.ResourceHelper.ResourceDirectoryPath.Replace(@"\", ".");
System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = c;
Thread.CurrentThread.CurrentCulture = c;
Session["CurrentCult"] = c;
}
public void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null && Session["CurrentCult"] != null)
{
string currentCulture = Convert.ToString(Session["CurrentCult"]);
if (String.Compare(currentCulture, System.Threading.Thread.CurrentThread.CurrentCulture.ToString(), StringComparison.OrdinalIgnoreCase) != 0)
{
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
try
{
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(currentCulture);
}
catch
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
}
}
}
}