2016-09-20 56 views
0

我運行一個C#.net網站,我在「file.txt」中存儲了四個變量。存儲在.txt文件中的原因是需要方便地進行更改。防止從每個瀏覽量的文件讀取數據

這些變量用於用戶在整個會話中呈現的每個頁面。爲每個瀏覽量讀取文件中的變量似乎是不必要的辛勤工作。

.txt文件的大小約爲500字節。

  • 我知道變量可以存儲爲會話變量,但我已經建議不必mutch存儲在會話中的數據。
  • 另一個雖然是緩存完整的.txt文件

會是怎樣來存儲這些變量的最佳方式?

+0

緩存變量30分鐘或任何你喜歡的時間 –

+0

是文件頻繁更改?這些變更是否需要在制定後立即適用? – slawekwin

+0

@slawekwin,該文件不會頻繁更改。也許每天一次。這些更改不必馬上應用。只要新用戶獲得新值,Useres可以用舊值完成他們的會話。 – saXen

回答

0

我最終緩存了四個字符串而不是文件。然後我也阻止閱讀每個頁面加載的文件內容。

string cachedString; 
cachedString = (string)Cache["CacheItem"]; 
if (cachedString == null) 
{ 
    cachedString = "Hello, World."; 
    Cache.Insert("CacheItem", cachedString); 
} 

msdn基於該代碼事實證明一種相當基本的解決方案。只是修改它允許幾個字符串。 :)

感謝您的所有輸入。

1

我以建議的文件變更使用緩存,過期

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到期高速緩存的文件更改和價值()方法執行來獲得新的價值。

幾乎總是從緩存中獲取值非常快。

+0

感謝您的代碼。這似乎是我的問題的完美答案。儘管在處理我的項目時,我發現還有另一種解決方法。不管怎麼說,還是要謝謝你。 – saXen