我運行一個C#.net網站,我在「file.txt」中存儲了四個變量。存儲在.txt文件中的原因是需要方便地進行更改。防止從每個瀏覽量的文件讀取數據
這些變量用於用戶在整個會話中呈現的每個頁面。爲每個瀏覽量讀取文件中的變量似乎是不必要的辛勤工作。
.txt文件的大小約爲500字節。
- 我知道變量可以存儲爲會話變量,但我已經建議不必mutch存儲在會話中的數據。
- 另一個雖然是緩存完整的.txt文件
會是怎樣來存儲這些變量的最佳方式?
我運行一個C#.net網站,我在「file.txt」中存儲了四個變量。存儲在.txt文件中的原因是需要方便地進行更改。防止從每個瀏覽量的文件讀取數據
這些變量用於用戶在整個會話中呈現的每個頁面。爲每個瀏覽量讀取文件中的變量似乎是不必要的辛勤工作。
.txt文件的大小約爲500字節。
會是怎樣來存儲這些變量的最佳方式?
我最終緩存了四個字符串而不是文件。然後我也阻止閱讀每個頁面加載的文件內容。
string cachedString;
cachedString = (string)Cache["CacheItem"];
if (cachedString == null)
{
cachedString = "Hello, World.";
Cache.Insert("CacheItem", cachedString);
}
在msdn基於該代碼事實證明一種相當基本的解決方案。只是修改它允許幾個字符串。 :)
感謝您的所有輸入。
我以建議的文件變更使用緩存,過期
using System.Runtime.Caching;
public static TResult GetOrSetFileCache<TResult>(string key, Func<string, TResult> value, string path)
{
if (MemoryCache.Default.Contains(key))
return (TResult) MemoryCache.Default.Get(key);
var val = value(key);
var policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromSeconds(600)
});
policy.ChangeMonitors.Add(new HostFileChangeMonitor(new List<string> { path }))
MemoryCache.Default.Set(key, value, policy);
return val;
}
HostFileChangeMonitor到期高速緩存的文件更改和價值()方法執行來獲得新的價值。
幾乎總是從緩存中獲取值非常快。
感謝您的代碼。這似乎是我的問題的完美答案。儘管在處理我的項目時,我發現還有另一種解決方法。不管怎麼說,還是要謝謝你。 – saXen
緩存變量30分鐘或任何你喜歡的時間 –
是文件頻繁更改?這些變更是否需要在制定後立即適用? – slawekwin
@slawekwin,該文件不會頻繁更改。也許每天一次。這些更改不必馬上應用。只要新用戶獲得新值,Useres可以用舊值完成他們的會話。 – saXen