Правильный способ обработки кеширования БД-данных - PullRequest
0 голосов
/ 03 мая 2011

Мне всегда было интересно, как именно вы будете обрабатывать кэширование значений базы данных (в C #, ASP.NET), чтобы вы, например, не перезагружали несколько связанных с DataSource ASP-элементов управления или не загружали их каждый раз при использованииопределенный бэкэнд-метод.

Давайте просто возьмем следующий пример:

aspx.cs-File:

List<FormElement> elements = FormElement.GetForForm(Session["FormName"].ToString());

Backend-Method:

public static List<FormElement> GetForForm(string fName)
    {
        DataTable dt = new DataTable();
        SqlCommand cmd = new SqlCommand("select Rank, Control, Variable from inspire.dbo.formelement where formid=(select id from inspire.dbo.form where name=@name)", Database.Conn);
        cmd.Parameters.Add(new SqlParameter("@name", fName));
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        return dt.Rows.ToList<FormElement>(item => new FormElement(item));}

Как именноЯ здесь занимаюсь кешированием?

Спасибо,

Деннис

1 Ответ

1 голос
/ 03 мая 2011

что мы сделали для кэширования:

  1. на стороне страницы, используйте глобальный контейнер (например, набор данных) для хранения всех необходимых данных, каждый из данных добавляет флаг времени дляэто

  2. на стороне сервера, используйте тот же контейнер для хранения данных, а также с временным флагом

  3. при обновлении страницы, сравнитефлаг времени с текущей датой, получить данные из этого контейнера;

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

  4. страница обновляет свой контейнер и выводит

поток просто так, однако, исходя из реальной ситуации, контейнера, стратегии обновления... может быть другой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...