Поделиться через


Кэширование результатов с помощью IDirectorySearch

Параметр ADS_SEARCHPREF_CACHE_RESULTS кэширует результирующий набор на клиенте. Кэширование результатов позволяет приложению сохранить полученный результирующий набор и снова пройти по извлеченным строкам. Она также обеспечивает поддержку курсоров, где методы IDirectorySearch::GetNextRow и IDirectorySearch::GetPreviousRow можно использовать для перемещения вверх и вниз результирующий набор.

По умолчанию кэширование результатов отключено. Кэширование результатов должно быть включено, если одно из следующих значений имеет значение true:

  • Если один и тот же результирующий набор необходимо перечислить несколько раз, не выполняя поиск снова на сервере.
  • Если выполнение поиска является ресурсоемким на сервере (медленное подключение, большой результирующий набор или сложный запрос).
  • Если требуется поддержка курсора.

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

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

Чтобы включить кэширование результатов, задайте параметр поиска ADS_SEARCHPREF_CACHE_RESULTS со значением ADSTYPE_BOOLEAN TRUE в массиве ADS_SEARCHPREF_INFO, переданном методу IDirectorySearch::SetSearchPreference.

В следующем примере кода показано, как включить кэширование результатов.

ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_CACHE_RESULTS;
SearchPref.vValue.dwType = ADSTYPE_BOOLEAN;
SearchPref.vValue.Boolean = TRUE;