私たちのウェブサイトには非常に奇妙な問題があります。1日で初めてサイトを実行すると(展開後は初めてではありません)、実行速度が非常に遅く、その時点でそのサイトに接続されているボディがない場合でも、ページ(任意のブラウザー)の読み込みに5分かかります。しかし、使い始めてさまざまなページを開くと、魅力のように実行されます。非常に高速(4秒以内)です。つまり、1人または複数のユーザーが接続している場合でも同様です。明確に言えば、サイトがアイドル状態のままである場合、サイトは初めてパフォーマンスが低下しますが、使用を開始すると、通常どおりに実行されます。サイトの構築には以下を使用しています。
- MVC 4
- ドットネットフレームワーク4.5
- データベース:SQLAnywhereとSQL Server 2008(両方のデータベースを使用して問題を解決しようとしましたが、成功しませんでした)
- WebAPIモデルを使用するEntityFramework5.0で、jQuery呼び出しを使用してページにデータを表示し、DataTableグリッド(http://www.datatables.net/)に表示しています。
- IIS7.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");
}
}
}
}