2016-09-20 54 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