共用方式為


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