情景:
现在,这在单个工作进程中非常有用,所有配置数据始终在内存中(仅在对数据进行修改时才将更改写入磁盘),并且因为它使用很多,它将应用程序的速度提高了几个数量级(与存储在数据库中并在每次请求时查询它相比)
您将如何转换此应用程序,以便可以在Web园中使用,甚至可以在Web场环境中使用?
我正在寻找的是实时同步机制
显然,问题是每个工作人员都拥有自己的静态类数据副本;我对我将采取的方法有一些想法,但是想看看人们有什么其他想法答案 0 :(得分:1)
您可以检查文件系统上共享文件的日期。每次配置数据更改时,只需触摸文件即可更改修改日期。将程序上次加载数据的日期与文件的日期进行比较。如果文件的日期较新,请重新加载数据,并更新LastLoaded日期。
重量轻,可以轻松触发数据重新加载。只要文件暂时没有改变,操作系统应该在ram中拥有大部分文件元数据。
虽然我没有进行性能比较,但我总是发现这种方式是一种强大且易于实现的方法,可以将“重新加载缓存”消息传递给所有客户端。
DateTime cacheDate = DateTime.Now.AddHours(-1);
DateTime fileDate = System.IO.File.GetLastWriteTime(@"C:\cachefile.txt");
if(fileDate > cacheDate)
{
//Reload cache
cacheDate = DateTime.Now;
}
//Get Cached Data
您还可以使用HttpContext缓存。
Context.Cache.Add(key, val,
new System.Web.Caching.CacheDependency(@"C:\cachefile.txt"),
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
null/* or your Callback for loading the cache.*/);
我之前没有用过这个,所以我不太了解它是如何工作的。