有几个问题涉及到这个问题,但没有涵盖我的确切问题,所以我们走了。
对于网站设置,如果这些存储在数据库中,请执行以下操作:
对于用户特定设置,我是否与网站设置相同?
非常感谢任何指导/最佳实践。
干杯
答案 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调用。一旦开始遇到性能问题,您可以考虑扩展配置文件提供程序以进行缓存和/或您的特定需求。