Лучший способ получить доступ к настройкам пользователя / сайта

StackOverflow https://stackoverflow.com/questions/241790

  •  04-07-2019
  •  | 
  •  

Вопрос

Была пара вопросов, которые вроде как касались этого, но не касались моего точного вопроса, так что поехали.

Что касается настроек сайта, если они хранятся в базе данных, вы:

  1. извлекайте их из базы данных каждый раз, когда кто-то делает запрос
  2. сохраните их в переменной сеанса при входе в систему
  3. ???????

Для пользовательских настроек делаю ли я то же самое, что и для настроек сайта??

Мы были бы весьма признательны за любые рекомендации / наилучшую практику.

Ваше здоровье

Это было полезно?

Решение

Я предпочитаю подход, подобный предлагаемому Гломеком...Кэширование настроек в 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 часов неиспользования, а также сброс и перезагрузку, необходимые при изменении настроек.

Другие советы

Я предлагаю создать модуль для извлечения настроек, который можно было бы реализовать любым способом, а затем для вашей первой реализации каждый раз обращаться к базе данных, поскольку это проще.Если у вас возникли проблемы с производительностью, добавьте кэширование в модуль, чтобы уменьшить трафик базы данных.

Обычно я бы помещал настройки сайта в файл web.config, если вы не создаете приложение, которое имеет несколько сайтов и часто изменяется самим приложением, обычно не имеет смысла сначала помещать его в базу данных.

Для пользовательских настроек я бы рассмотрел вариант, начинающийся с значения по умолчанию asp.net Поставщик профиля, который будет хранить настройки в базе данных и управлять повторным вводом пользовательских настроек один раз за запрос и сохранять обновления до конца, чтобы свести к минимуму количество обращений к базе данных.Как только вы начнете сталкиваться с проблемами производительности, вы можете рассмотреть возможность расширения поставщика профилей для кэширования и / или ваших конкретных потребностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top