防止从每个页面查看的文件中读取数据
本文关键字:文件 数据 读取 | 更新日期: 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上的代码,它变成了一个相当基本的解决方案。只是将它修改为允许多个字符串。:)