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 attribute cache