ASP.NET网站的全局设置

时间:2011-05-30 10:29:11

标签: asp.net sql-server web-config sqlcachedependency

我正在尝试为网站创建一种全局设置并将这些数据存储在数据库中,但我一直认为这可能效率不高,因为每次请求都必须读取这些设置。

“每页显示多少条记录”等设置的类型,启用/禁用内容,我打算将其存储在数据库中,但不希望在每次请求时调用数据库的开销都是设置,特别是当它们不改变时。当然这一切都是在CMS上完成的,您认为应该怎么做。我在想SqlCacheDependency但从未设置过。还有另一种方式吗?

同样在卡上可以将这些设置存储在web.config上并为其创建GUI,问题是该站点的管理在它自己的命名空间上运行并拥有它自己的web.config,所以问题这是因为可以在应用程序命名空间之外操作web.config。

谢谢你们。

2 个答案:

答案 0 :(得分:1)

我建议您阅读Application_Start中数据库中的值,并将这些值存储在Application object中。这样,您不需要每次都去DB读取值。它只会在应用程序启动时读取和存储一次值。

void Application_Start(object sender, EventArgs e)
{
  Application["name"] = ""; Value from DB
  ......................
  ......................
}

注意:建议不要操纵web.config using UI中的值,因为一旦用户尝试修改UI中的任何值,就会更改{{1}中的值},您的所有用户会话都将是web.config

另请注意:每次更改信息并更新数据库时,您都需要更新应用程序级别对象。

答案 1 :(得分:0)

首先,我不会开始担心计算数据库调用,直到您知道数据库调用实际上会损害性能。现代数据库很快,特别是对于标量值的精心设计的查询。许多受欢迎的软件包在每个请求上都会读取配置,它们似乎可以很好地扩展。

至于更新这些值,您可以非常轻松地从另一个应用程序更新web.config文件,假设您拥有正确的权限 - 这肯定需要完全信任,这会遗漏大多数托管方案。要记住的是,虽然VS将文件视为特殊文件,但它只是一个XML文件,因此更新XML文件的常规技巧将适用。因为您是从不同的应用程序执行此操作,所以它将起作用。但穆罕默德关于倾销用户会话的警告将适用于更新的“受害者”。根据您正在改变的内容,这可能没问题。