これに対処したいくつかの質問がありましたが、私の正確な質問をカバーしていないので、ここに行きます.
サイト設定について、これらがデータベースに保存されている場合、次のことを行います。
- 誰かがリクエストするたびにデータベースからそれらを取得する
- ログイン時にセッション変数に保存します
- ?????????
ユーザー固有の設定については、サイトの設定と同じですか??
ガイダンス/ベストプラクティスは大歓迎です。
乾杯
どちらの方法でも実装できる設定を取得するためのモジュールを作成することをお勧めします。最初の実装では、それが簡単なので、毎回データベースにアクセスします。パフォーマンスに問題がある場合は、データベーストラフィックを減らすために、モジュールにキャッシュを追加してください。
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ファイルに入れます。ただし、複数のサイトがあり、アプリケーション自体によって頻繁に変更されるアプリケーションを構築している場合を除いて、最初はデータベースに入れても意味がありません。
ユーザー固有の設定については、データベースに設定を保存し、リクエストごとに1回ユーザー設定の取得を管理し、更新を最後まで保存してDB呼び出しの数を最小限に抑える、デフォルトのasp.netプロファイルプロバイダーから始めて検討します。 。パフォーマンスの問題が発生し始めたら、キャッシュや特定のニーズに合わせてプロファイルプロバイダーを拡張することを検討できます。