Partager via


Mise en cache des résultats avec IDirectorySearch

La préférence ADS_SEARCHPREF_CACHE_RESULTS met en cache le jeu de résultats sur le client. La mise en cache des résultats permet à une application de conserver un jeu de résultats récupéré et de parcourir à nouveau les lignes récupérées. Il permet également la prise en charge des curseurs où les méthodes IDirectorySearch::GetNextRow et IDirectorySearch::GetPreviousRow peuvent être utilisées pour monter et descendre le jeu de résultats.

Par défaut, la mise en cache des résultats est désactivée. La mise en cache des résultats doit être activée si l’une des conditions suivantes est vraie :

  • Si le même jeu de résultats doit être énuméré plusieurs fois sans effectuer à nouveau la recherche sur le serveur.
  • Si la recherche nécessite beaucoup de ressources sur le serveur (connexion lente, jeu de résultats volumineux ou requête complexe).
  • Si la prise en charge du curseur est requise.

Désactivez la mise en cache si votre application doit réduire les besoins en mémoire pour la mise en cache d’un jeu de résultats volumineux sur le client.

La mise en cache des résultats augmente les besoins en mémoire sur le client. La mise en cache des résultats doit donc être désactivée si cela est un problème.

Pour activer la mise en cache des résultats, définissez une option de recherche ADS_SEARCHPREF_CACHE_RESULTS avec une valeur ADSTYPE_BOOLEANTRUE dans le tableau ADS_SEARCHPREF_INFO passé à la méthode IDirectorySearch::SetSearchPreference .

L’exemple de code suivant montre comment activer la mise en cache des résultats.

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