流暢な NHibernate を使用する ASP.NET MVC4 Web API がありますが、デバッグを実行すると、データベースを使用するサイトに初めてアクセスするのに 1 分半かかります。それをどう活かすか、
ライブサーバーで実行すると、セッションデータをガベージコレクションする必要があります。これは、長時間使用していない場合、再度構成するのに時間がかかるためです。
1.5 分ではなく 10 秒未満に短縮することは可能ですか?
私の現在の SessionFactory クラスは次のようになります
public class SessionFactory
{
private static readonly string ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ConnectionString;
private static ISessionFactory _session;
private static readonly object SyncRoot = new Object();
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration
.Standard
.ConnectionString(ConnString))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(UpdateSchema)
.BuildSessionFactory();
}
private static void UpdateSchema(Configuration cfg)
{
new SchemaUpdate(cfg).Execute(false, true);
}
public static ISession Session
{
get
{
if (_session == null)
{
lock (SyncRoot)
{
if (_session == null)
_session = CreateSessionFactory();
}
}
return _session.OpenSession();
}
}
}
これは dotTrace のスクリーンショットです
私のホストでリクエストのタイミングを計ると、最初のリクエストに1分50秒かかり、それは「ライブ」サーバー上にあります(そこでIISを制御できません)