普通缓存类和MemoryCache类有什么区别?
缓存是指存储在内存中的数据。那么为什么要为 MemoryCache 提供额外的类呢?
MemoryCache 类的用途是什么?何时使用它来代替普通缓存类?
请看下面的示例代码
private void btnGet_Click(object sender, EventArgs e)
{
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;
}
上面的代码做了什么?是否监控文件内容变化?
最佳答案
HttpRuntime.Cache 获取当前应用程序的缓存。
看这里
msdn
MemoryCache是存储在内存中的缓存。
表示实现内存缓存的类型。
msdn
这是一个优秀的博客,可以消除您所有的疑虑 blog
仅摘自此博客的几行内容。
msdn 说 this
Cache 类不适合在 ASP.NET 应用程序之外使用。它经过设计和测试,可在 ASP.NET 中使用,为 Web 应用程序提供缓存。在其他类型的应用程序中,例如控制台应用程序或 Windows 窗体应用程序,ASP.NET 缓存可能无法正常工作。
尽管 Microsoft 始终坚称 ASP.NET 缓存不适合在 Web 之外使用。但许多人仍然停留在 .NET 2.0 和 .NET 3.5 中,并且需要一些东西来使用。
Microsoft 最终在最新版本的 .NET Framework 中实现了一个抽象 ObjectCache 类,以及一个 MemoryCache 实现,该实现继承并实现了 ObjectCache,用于非 Web 设置中的内存用途。 System.Runtime.Caching.ObjectCache 位于 System.Runtime.Caching.dll 程序集中。它是一个抽象类,它声明的 .NET 1.0 样式接口(interface)与 ASP.NET 缓存中的接口(interface)基本相同。
System.Runtime.Caching.MemoryCache 是 ObjectCache 的内存中实现,与 ASP.NET 缓存非常相似,但有一些更改。
关于asp.net - 普通缓存类和MemoryCache类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382743/