如何在Web场中的Asp.Net WebForms中使用来自DB的存储常量的缓存?

时间:2016-03-31 09:03:23

标签: sql-server caching webforms web-farm

我有任何在Asp.Net Webforms应用程序中缓存数据的经验。

我有一个包含四台服务器的Web场。

我有一个表格,其中包含MSSQL Server中的常量。

我不想用来自DB的每个http请求选择这些常量,但理想情况下将这些值保存到缓存中并从缓存中获取这些值。

如何在Web场中执行此操作? 这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用HttpContext.Cache存储这些值,但是如果它们真的不变(即它们绝对不会改变),那么您可以使用static class使用static readonly属性并从数据库中填充一次这些属性。

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

答案 1 :(得分:-1)

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

根据概述here

Application不是缓存,它是全局命名值集合。如果您将对象添加到Application,它将保留到应用程序域回收。

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

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