質問
これに対処するいくつかの質問がありましたが、私の正確な質問をカバーしていないので、ここに行きます。
サイト設定の場合、これらがデータベースに保存されている場合:
- リクエストが行われるたびにデータベースからそれらを取得する
- ログイン時にセッション変数に保存する
- ???????
ユーザー固有の設定については、サイトの設定と同じですか?
ガイダンス/ベストプラクティスは大歓迎です。
乾杯
解決
Glomekが提案するようなアプローチを好む... WebCacheの設定をキャッシュすると、アクセス速度が大幅に向上します。以下を考慮してください。
#region Data Access
private string GetSettingsFromDb(string settingName)
{
return "";
}
private Dictionary<string,string> GetSettingsFromDb()
{
return new Dictionary<string, string>();
}
#endregion
private const string KEY_SETTING1 = "Setting1";
public string Setting1
{
get
{
if (Cache.Get(KEY_SETTING1) != null)
return Cache.Get(KEY_SETTING1).ToString();
Setting1 = GetSettingsFromDb(KEY_SETTING1);
return Setting1;
}
set
{
Cache.Remove(KEY_SETTING1);
Cache.Insert(KEY_SETTING1, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(2));
}
}
private Cache Cache { get { return HttpContext.Current.Cache; } }
動的な読み込みの良さ、2時間の不使用後のキャッシュからのアイテムの投げ出しのメモリ節約、および設定が変更されたときに必要なフラッシュとリロードが得られます。
他のヒント
どちらの方法でも実装できる設定を取得するためのモジュールを作成することをお勧めします。最初の実装では、それが簡単なので毎回データベースにアクセスします。パフォーマンスに問題がある場合は、モジュールにキャッシュを追加してデータベーストラフィックを減らします。
通常、複数のサイトを持ち、アプリケーション自体によって頻繁に変更されるアプリケーションを構築している場合を除き、web.configファイルにサイト設定を配置します。通常、最初にデータベースに配置することは意味がありません。 。
ユーザー固有の設定については、データベースに設定を保存し、リクエストごとにユーザー設定の取得を管理し、更新を最後まで保存して数を最小化するデフォルトのasp.netプロファイルプロバイダーから始めますDB呼び出しの。パフォーマンスの問題が発生し始めたら、キャッシュや特定のニーズに合わせてプロファイルプロバイダーを拡張することを検討できます。
所属していません StackOverflow