防止从每个页面查看的文件中读取数据

本文关键字:文件 数据 读取 | 更新日期: 2023-09-27 18:07:54

我运行一个c# .net网站,我在"file.txt"中存储了四个变量。存储在。txt文件的原因是需要方便地访问进行更改。

这些变量用于用户在整个会话中获得的每个页面。为每个页面浏览从文件中读取变量似乎是不必要的艰苦工作。

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

  • 我知道变量可能存储为会话变量,但我已经被建议不要在会话中存储太多数据。
  • 另一种方法是缓存完整的。txt文件

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

防止从每个页面查看的文件中读取数据

我建议在文件更改时使用过期缓存

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()方法执行以获取新值

最后缓存的是这四个字符串而不是文件。然后,我还防止读取每个页面加载的文件内容。

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

基于msdn上的代码,它变成了一个相当基本的解决方案。只是将它修改为允许多个字符串。:)