我运行一个C#.net网站,我在“file.txt”中存储了四个变量。存储在.txt文件中的原因是需要方便地进行更改。防止从每个浏览量的文件读取数据
这些变量用于用户在整个会话中呈现的每个页面。为每个浏览量读取文件中的变量似乎是不必要的辛勤工作。
.txt文件的大小约为500字节。
- 我知道变量可以存储为会话变量,但我已经建议不必mutch存储在会话中的数据。
- 另一个虽然是缓存完整的.txt文件
会是怎样来存储这些变量的最佳方式?
我运行一个C#.net网站,我在“file.txt”中存储了四个变量。存储在.txt文件中的原因是需要方便地进行更改。防止从每个浏览量的文件读取数据
这些变量用于用户在整个会话中呈现的每个页面。为每个浏览量读取文件中的变量似乎是不必要的辛勤工作。
.txt文件的大小约为500字节。
会是怎样来存储这些变量的最佳方式?
我最终缓存了四个字符串而不是文件。然后我也阻止阅读每个页面加载的文件内容。
string cachedString;
cachedString = (string)Cache["CacheItem"];
if (cachedString == null)
{
cachedString = "Hello, World.";
Cache.Insert("CacheItem", cachedString);
}
在msdn基于该代码事实证明一种相当基本的解决方案。只是修改它允许几个字符串。 :)
感谢您的所有输入。
我以建议的文件变更使用缓存,过期
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到期高速缓存的文件更改和价值()方法执行来获得新的价值。
几乎总是从缓存中获取值非常快。
感谢您的代码。这似乎是我的问题的完美答案。尽管在处理我的项目时,我发现还有另一种解决方法。不管怎么说,还是要谢谢你。 – saXen
缓存变量30分钟或任何你喜欢的时间 –
是文件频繁更改?这些变更是否需要在制定后立即适用? – slawekwin
@slawekwin,该文件不会频繁更改。也许每天一次。这些更改不必马上应用。只要新用户获得新值,Useres可以用旧值完成他们的会话。 – saXen