[英]ASP.Net Cache sharing
我有一个ASP.Net 4.0 Web应用程序,它经常从数据库加载数据并对其进行繁重的计算。 我想将这些已加载和准备好的数据缓存在中央缓存中,每个使用该应用程序的用户和计算机都可以访问该缓存。
简单的用例:
我知道ASP.Net有一个内置的缓存机制。 我不知道的是它是否可以在同一时间访问不同计算机上的站点的不同用户之间共享。 我还想知道系统在Web场环境中的行为方式。
虽然其他人已经提到了内置的ASP.NET缓存(System.Web.Caching),但请注意.NET 4.0引入了一个全新的缓存框架,旨在在System.Web.Caching命名空间之外工作:
System.Runtime.Caching
http://msdn.microsoft.com/en-us/library/system.runtime.caching(VS.100).aspx
现在,这比简单的System.Web.Caching的Cache项更像是野兽。 但是,您可以获得多个缓存存储,锁定缓存对象/密钥以及创建自己的外部缓存提供程序的可扩展性的优势 - 例如Microsoft的新Velocity分布式缓存系统 。 它内置了一个MemoryCache提供程序。
这真的不是那么难以使用。 直接来自MSDN关于内置MemoryCache提供程序的文章(同样,您可以实现自己的)在WinForms应用程序中使用它(您将更改Web应用程序的代码):
http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;
if (fileContents == null)
{
CacheItemPolicy policy = new CacheItemPolicy();
List<string> filePaths = new List<string>();
filePaths.Add("c:\\cache\\example.txt");
policy.ChangeMonitors.Add(new
HostFileChangeMonitor(filePaths));
// Fetch the file contents.
fileContents =
File.ReadAllText("c:\\cache\\example.txt");
cache.Set("filecontents", fileContents, policy);
}
Label1.Text = fileContents;
我已经实现了NCache(如上所述),以及Memcached。 我可以告诉你,微软的Velocity实际上是分区数据和在缓存分区内设置冗余的方式(非常酷)。 更不用说,它是免费的!
是的,内置的ASP.NET缓存在应用程序中的所有用户(线程)之间共享。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.