防止从每个网页浏览的文件中读取数据

时间:2016-09-20 07:25:58

标签: c# .net variables

我运行一个C#.net网站,在那里我将四个变量存储在" file.txt"中。存储在.txt fil中的原因是需要轻松访问进行更改。

变量用于用户为完整会话呈现的每个页面。从每个网页浏览的文件中读取变量似乎是不必要的艰苦工作。

.txt文件的大小约为500字节。

  • 我知道变量可以存储为会话变量,但我已经建议不必变换存储在会话中的数据。
  • 另一个是缓存完整的.txt文件

存储这些变量的最佳方法是什么?

2 个答案:

答案 0 :(得分: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在文件更改时使缓存失效,并执行value()方法以获取新值。

几乎总是从缓存中获取值非常快。

答案 1 :(得分:0)

我最终缓存了四个字符串而不是文件。然后我也阻止读取每个页面加载的文件内容。

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

基于msdn的代码,它得出了一个相当基本的解决方案。只是修改它以允许几个字符串。 :)

感谢所有投入。