2011-07-19 17 views
0

私はasp.netアプリケーションを開発しています。私のデータベースでは、 "古典的な"モノラルレコード設定テーブルがあります。 私は設定を必要とするたびに、私は、接続を開く「ReturnSetting」はこのasp.netアプリケーションの永続的な設定をキャッシュする方法

if ReturnSetting("my_setting") = value then 
'do something 
else 
'do others 
end if 

のようないくつかのコードを記述し、設定値を取得し、それを返します。 これは効率的ではありません(オープン接続、データエリアなど)

これをどのように最適化できますか?

あなたは

答えて

0

関数を使用してアプリケーションオブジェクトをチェックすると、コードが最適化され、データベース呼び出しが1回実行されます。

N.B.このソリューションは、グローバルなWebサイト設定の場合は効果的ですが、ユーザー設定の場合は、global.asaxでSession Startイベントを使用し、データを格納するセッションを使用する必要があります。

+0

はい...あなたは正しいです。ありがとうございました ! – stighy

+0

あなたは大歓迎です! –

1

変数を書き、最初の要求に応じてそれらを埋めることができありがとうございました。次のリクエストはすでに入力された変数を返します。

私はあなたが一度データベースからこのデータをロードし、アプリケーションオブジェクトに結果を入れて、あなたの「ReturnSetting」を更新するために、アプリケーションの開始イベントにGlobal.asaxファイルに関数の呼び出しを記述することができると思い
public static class Settings 
{ 
    internal static Dictionary<string, object> _settingsCache = new Dictionary<string, object>(); 
    internal static Mutex _mutex = new Mutex(); 

    public static object Get(string key) 
    { 
     _mutex.WaitOne(); 
     if (_settingsCache[key] == null) 
     { 
      // add to the cache 
      _settingsCache.Add(key, NEW_DATA) 
     } 
     _mutex.ReleaseMutex(); 
     return _settingsCache[key]; 
    } 
} 
+0

重要な発言:これは必須です静的変数 –

+0

の静的変数ですか?どのレベルですか?フォームに? global.asaxに?どこ? – stighy

+0

私は完全な解決策で私の答えを編集しました。 – dknaack

関連する問題