1

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

诸如“每页显示多少条记录”之类的设置类型,启用/禁用事物,我计划将其存储在数据库中,但不希望在每次请求时都必须调用数据库来获取设置的开销,特别是当他们没有改变时。当然这在 CMS 上一直都在做,你认为应该怎么做。我在想 SqlCacheDependency 但从未设置过。还有其他方法吗?

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

多谢你们。

4

2 回答 2

1

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

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

注意:不建议在 中操作值web.config using UI,因为一旦用户尝试从 UI 修改任何值,这会更改 中的值web.config,您的所有用户会话都将是terminated

另一个注意事项:每次更改信息和更新数据库时,您也需要更新应用程序级别的对象。

于 2011-05-30T10:38:43.110 回答
0

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

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

于 2011-05-30T10:54:43.397 回答