Стратегия кеширования - PullRequest
       6

Стратегия кеширования

0 голосов
/ 07 февраля 2009

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

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

что было бы лучшим способом сделать это. .

Ответы [ 5 ]

4 голосов
/ 07 февраля 2009

Проблема с загрузкой 1000 в первую очередь

  1. Кто будет прокручивать 1000?

  2. Возвращение к диску приведет к сбросу выпадающего списка, и им придется снова прокручиваться.

Решение

  1. Почему бы не реализовать раскрывающийся список автоматического поиска и попробовать кешировать блок приложения, он прекрасно работает с большими объемами данных.

  2. Посмотрите на выпадающее меню devexpress, вам нужно будет купить их элементы управления.

4 голосов
/ 07 февраля 2009

Я предполагаю, что вы фильтруете этот список в другом месте ... в противном случае это довольно большой список. Самый простой способ получить доступ к новому, более компактному статическому кешу перед попаданием в БД - это пропустить все запросы одним способом:

public yourClass GetDesiredObject(string lkupValue)
{
  if (yourCachedHashtable.ContainsKey(lkupValue))
  {
     return yourCachedHashtable[lkupValue]
  }
  else
  {
     //Hit the db to retrieve the object values.
     yourClass obj = yourDatabaseCode.GetNewObject(lkupValue);
     //Add to the cache if desired.
     yourCachedHashtable.Add(lkupValue, obj);
     return obj;
  }
}
1 голос
/ 07 февраля 2009

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

1 голос
/ 07 февраля 2009

У вас есть выпадающий список с 50000 предметов? Это кажется немного излишним. Возможно, управление списком просмотра? Также вы можете создать представление списка как представление виртуального списка - в этом режиме он будет загружать элементы только по мере необходимости, другие элементы можно загружать, если они будут прокручиваться в представлении. Поскольку в представлении списка имеется так много элементов, я предлагаю вам поработать над каким-либо элементом управления поиском, который пользователь может использовать для сужения списка элементов.

0 голосов
/ 07 февраля 2009

В зависимости от характера ваших данных, как насчет того, чтобы забыть обо всем этом и оставить на усмотрение ОС? Поместите его в файл с отображением в памяти.

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