不同ASP.NET缓存选项的优缺点

ves*_*ous 55 c# asp.net asp.net-mvc caching asp.net-web-api

我最近问了一个关于在ASP.NET MVC WebAPI应用程序中缓存应用程序数据的问题,这引出了一个新问题.ASP.NET中可用的不同缓存方法的优缺点是什么?

我来了:

我确信还有其他的,我知道它们都在技术上将数据存储在内存中......所以我知道应该使用什么来构建ASP.NET MVC webapi?

我以前的问题: 在内存中缓存应用程序数据:MVC Web API

R.C*_*R.C 34

每种缓存技术/方法都有自己的一组功能.这些特征在一个应用要求中似乎是不利的,但在其他应用要求中可能是有利的.

因此,简而言之,根据您的要求决定哪种缓存技术以及哪些功能最适合您.

For example, Let us discuss some client side Caching techniques.

MSDN表示我们还可以使用HiddenField仅在隐藏字段中存储少量频繁变化的数据,因为这些数据包含在每次回发的往返服务器中.

此功能的优点:通过使用客户端选项存储页面信息,减少服务器上的工作负载.

但是,MSDN清楚地表明:这种方法具有最小的安全支持.

因此,总是可以使用或不使用此功能,因为安全性考虑因素也存在.

Consider one more example,Page Output caching它有两种类型,页面输出缓存和页面片段缓存.

页面输出缓存缓存整个网页,仅当该页面的内容相当静态时才适用.如果页面的某些部分正在更改,您可以将静态部分包装为用户控件,并使用页面片段缓存来缓存用户控件.

And one last comment on Application vs HttpRuntime.cache:

Application不是缓存,它是一个全局命名值集合.如果你添加一个对象Application将保持到一个appdomain回收.

  • 应用程序变量是Web应用程序的所有用户之间的共享变量
  • 应用程序变量的行为类似于静态变量,它们可以替代静态变量,因为静态变量在Web应用程序中是无状态的
  • 只有共享值应该保留在Application变量中,并且一旦它们不在使用中,就应该显式删除它们.

Cache:通过在ApplicationCache类中缓存频繁请求的对象和数据,可以在ASP.NET应用程序中获得显着的性能改进.虽然该Cache课程当然提供了更多的灵活性和控制,但它似乎在提高Application缓存类的吞吐量方面提供了边际优势.开发一种测试方案是非常困难的,该方案可以Cache通过清除过程准确地测量该类对较少使用对象的内置管理的潜在优势,而不是应用程序不提供此功能的事实.开发人员需要在这种情况下做出决定,并且应该基于项目的需求和便利性及其使用模式.检查此链接 更多.

请参阅此MSDN文章,了解有关Asp.net中所有缓存技术的完整解释,并讨论每种技术的功能.

此外,这两个链接是一个很好的开始:

  • 很棒的概述!虽然您的评论主要针对的是asp.net网站,而不是webapi,但您列出的msdn网络文章有很多令人惊叹的信息. (2认同)

Joe*_*Joe 10

关于MemoryCachevs ASP.NET Cache:它们提供非常相似的功能.在ASP.NET 4应用程序中,我通常更喜欢ASP.NET缓存,如果没有其他原因,那么因为.NET 4中一个错误,显然在.NET 4.5中修复了.

静态字段适用于存储不需要过期策略的共享数据.

应用程序状态只不过是一个具有与经典ASP兼容的锁定语义的静态字典 - 我只使用它来向后兼容传统的经典ASP代码.