ADSI 属性缓存

ADSI 对象模型为每个 ADSI 对象提供客户端属性缓存。 属性缓存与内存中的表相当,其中包含已下载的大多数对象属性的名称和值。 某些属性(如作属性)不会缓存。 ADSI 使用属性缓存来增强属性作的性能,并为属性读取和写入作添加事务功能。 此功能对于使用语言编写的客户端至关重要,这些客户端没有用于设置属性的本机批处理机制,例如Microsoft Visual Basic 开发系统。 如果没有 ADSI 属性缓存,则每次读取或写入属性时,此类客户端必须访问服务器。

创建对象或首次绑定到对象时,该对象的属性缓存为空。 调用 IADs::GetInfo 方法时,ADSI 会将对象的请求属性从基础目录服务加载到本地缓存中。 读取特定属性值且缓存为空时,ADSI 对 IADs::GetInfo 方法进行隐式调用。 填充缓存后,所有属性读取作仅处理缓存的内容。

写入属性值时,新值将存储在本地缓存中,直到调用 IADs::SetInfo 方法。 调用 IADs::SetInfo 方法时,缓存中的属性将提交到基础目录服务。 调用 IADs::SetInfo 方法后,这些值将保留在缓存中,直到显式刷新 IADs::GetInfo 方法。

重要

必须仔细使用 IADs::GetInfo 方法,因为此方法将始终覆盖基础目录服务缓存中的属性值,即使缓存的值已更改也是如此。 也就是说,它将覆盖缓存中已更改的属性值,但不会通过调用 IADs::SetInfo 方法提交到基础目录服务。

 

下图显示了用于对缓存进行作的不同方法。

adsi 属性缓存