我正在開發一個asp.net應用程序。在我的數據庫中,我有一個「經典」單聲道記錄設置表。 每次我需要一個環境,我這樣寫如何「緩存」asp.net應用程序中的持久設置
if ReturnSetting("my_setting") = value then
'do something
else
'do others
end if
一些代碼在「ReturnSetting」我打開一個連接,得到了設定值,並返回。 這是不高效的(開放連接,數據採集等)
我該如何優化?
謝謝
我正在開發一個asp.net應用程序。在我的數據庫中,我有一個「經典」單聲道記錄設置表。 每次我需要一個環境,我這樣寫如何「緩存」asp.net應用程序中的持久設置
if ReturnSetting("my_setting") = value then
'do something
else
'do others
end if
一些代碼在「ReturnSetting」我打開一個連接,得到了設定值,並返回。 這是不高效的(開放連接,數據採集等)
我該如何優化?
謝謝
我想你可以寫調用在應用啓動事件在Global.asax文件中的函數從數據庫加載一次這些數據,並把結果在應用程序中的對象並更新「ReturnSetting」函數來檢查應用程序對象,這將優化您的代碼,以便數據庫調用完成一次。
N.B.如果這是全局網站設置,則此解決方案將有效工作,但如果它是用戶設置,則必須使用global.asax中的Session Start事件和會話來存儲數據。
你可以寫一個變量,並填寫他們只在第一次請求。接下來的請求將返回已經填充的變量。
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];
}
}
是的......你說得對。謝謝 ! – stighy
不客氣! –