2016-03-31 22 views
0

我对Asp.Net Webforms应用程序中的数据缓存有任何经验。如何在Web场的Asp.Net WebForms中使用缓存来存储数据库的常量?

我有四个服务器的网络农场。

我有一个MSSQL服务器中的常量表。

我不想从数据库的每个http请求中选择这些常量,但最好将这些值保存到缓存中并从缓存中获取这些值。

我该如何在网络农场上做到这一点? 这样做的最佳方式是什么?

回答

1

您可以使用HttpContext.Cache来存储这些值,用久到期时间,或者如果他们真的不断(即它们绝对不会改变),那么你可以使用一个static classstatic readonly性质,一旦填补这些特性来自数据库。

在这两种情况下,它们都可以在整个应用程序中使用。这种方法在Web场中使用时,意味着每个服务器都会检索一次值,而不是整个农场一次,但除非值的数量达到10,000,否则我个人不会担心这一点。

-1

如果数据真的永远不会改变,你也可以使用HttpContext.Current.Application来存储信息。

据概述here

Application不是一个缓存,它是一个全局命名的收藏价值。如果您将一个对象添加到Application它将一直保留到一个应用程序域回收。

  • Application变量是共享的Web应用程序的所有用户之间的变量
  • Application变量行为像静态变量,他们是静态变量的替代品为静态变量在Web应用程序是无状态的
  • 只有共同的价值观应该是持久化在应用程序变量中,一旦它们不被使用,它们应该被明确地删除。

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

+1

欢迎来到Stack Overflow!虽然链接可能会回答问题,但链接更改,因此Stack Overflow更喜欢不依赖它们。 [这会更好](// meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 –