使用 IDirectorySearch 的结果缓存

ADS_SEARCHPREF_CACHE_RESULTS 首选项会在客户端缓存结果集。 结果缓存使应用程序能够保留检索到的结果集,并再次查看检索到的行。 它还支持游标,可使用 IDirectorySearch::GetNextRowIDirectorySearch::GetPreviousRow 方法来上下移动结果集。

默认情况下,结果缓存会被禁用。 如果以下任一项为 true,则应启用结果缓存:

  • 如果必须多次枚举相同的结果集,而无要在服务器上再次执行搜索。
  • 如果在服务器上执行搜索是资源密集型的(连接速度慢、结果集大或查询复杂)。
  • 如果需要光标支持。

如果应用程序必须减少客户端缓存大型结果集所需的内存,请关闭缓存。

结果缓存会增加客户端的内存需求,因此如果担心这个问题,应禁用结果缓存。

要启用结果缓存,请在传递给 IDirectorySearch::SetSearchPreference 方法的 ADS_SEARCHPREF_INFO 数组中设置 ADS_SEARCHPREF_CACHE_RESULTS 搜索选项,其 ADSTYPE_BOOLEAN 值为 TRUE

下面的代码示例显示了如何启用结果缓存:

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