普通缓存 class 和 MemoryCache class 有什么区别?

What is difference between normal cache class and MemoryCache class?

普通缓存class和MemoryCacheclass有什么区别?

缓存是指存储在内存中的数据。那为什么要给 MemoryCache 额外的 class?

MemoryCache class 的用途是什么,何时使用它来代替普通缓存 class?

请看下面的示例代码

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
The Cache class is not intended for use outside of ASP.NET applications. It was designed and tested for use in ASP.NET to provide caching for Web applications. In other types of applications, such as console applications or Windows Forms applications, ASP.NET caching might not work correctly.

虽然微软一直坚称 ASP.NET 缓存不适合在网络之外使用。但许多人仍然停留在 .NET 2.0 和 .NET 3.5 中,需要一些东西来使用。

Microsoft 终于在最新版本的 .NET Framework 中实现了抽象的 ObjectCache class,以及在非 Web 设置中继承和实现 ObjectCache 用于内存中目的的 MemoryCache 实现。 System.Runtime.Caching.ObjectCache 在 System.Runtime.Caching.dll 程序集中。它是一个抽象 class,声明了与 ASP.NET 缓存中发现的基本相同的 .NET 1.0 样式接口。

System.Runtime.Caching.MemoryCache 是 ObjectCache 的内存实现,与 ASP.NET 缓存非常相似,只有一些变化。