Кэширование результатов с помощью 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;