访问用户/站点设置的最佳方式

时间:2008-10-28 00:06:31

标签: c# asp.net settings

有几个问题涉及到这个问题,但没有涵盖我的确切问题,所以我们走了。

对于网站设置,如果这些存储在数据库中,请执行以下操作:

  1. 每当有人提出请求时从数据库中检索它们
  2. 将它们存储在登录
  3. 的会话变量中
  4. ???????
  5. 对于用户特定设置,我是否与网站设置相同?

    非常感谢任何指导/最佳实践。

    干杯

3 个答案:

答案 0 :(得分:1)

我建议创建一个模块,用于检索可以以任何方式实现的首选项,然后每次都可以在第一次实现时访问数据库,因为这样更容易。如果遇到性能问题,请将缓存添加到模块以减少数据库流量。

答案 1 :(得分:1)

我更喜欢Glomek提出的方法......在WebCache中缓存设置将大大提高访问速度。请考虑以下事项:

    #region Data Access

private string GetSettingsFromDb(string settingName)
{
    return "";
}
private Dictionary<string,string> GetSettingsFromDb()
{
    return new Dictionary<string, string>();
}

#endregion

private const string KEY_SETTING1 = "Setting1";
public string Setting1
{
    get
    {
        if (Cache.Get(KEY_SETTING1) != null)
            return Cache.Get(KEY_SETTING1).ToString();

        Setting1 = GetSettingsFromDb(KEY_SETTING1);

        return Setting1;

    } 
    set
    {
        Cache.Remove(KEY_SETTING1);
        Cache.Insert(KEY_SETTING1, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(2));
    }
}

private Cache Cache { get { return HttpContext.Current.Cache; } }

您将获得动态加载优势,在2小时不使用后从缓存中抛出项目的内存保留,以及修改设置时所需的刷新和重新加载。

答案 2 :(得分:0)

通常我会将网站设置放在web.config文件中,除非您构建的应用程序具有多个网站并且经常被应用程序本身更改,因此通常将它放在数据库中是没有意义的

对于特定于用户的设置,我将从默认的asp.net配置文件提供程序开始,它将设置存储在数据库中,并根据请求管理一次用户设置的重新审核,并将更新保存到最后以最小化数量DB调用。一旦开始遇到性能问题,您可以考虑扩展配置文件提供程序以进行缓存和/或您的特定需求。