請利用這個作業來定義 cachespec.xml(在 Web 模組 WEB-INF 或 Enterprise Bean META-INF 目錄中)內可快取的物件。
開始之前
啟用動態快取。
請參閱「使用動態快取服務」一文,以取得相關資訊。
關於這項作業
您可以將廣域的 cachespec.xml 儲存在應用程式伺服器 properties 目錄中,但建議的方法是將快取配置檔與部署模組放在一起。
cachespec.xml 檔的根元素是 <cache>,它包含 <cache-entry> 元素。
避免困難: 在應用程式伺服器內容目錄中有廣域
cachespec.xml 檔且應用程式中有
cachespec.xml 檔的情況下,會合併兩個 cachespec.xml 檔中的項目。
如果這兩個檔案中有衝突的項目,則應用程式的
cachespec.xml 檔中的項目會置換該應用程式的廣域
cachespec.xml 檔中的項目。
gotcha
<cache-entry> 元素可以放在 <cache> 元素或 <cache-instance> 元素內,形成巢狀結構。
以巢狀方式放在 <cache> 元素內的 <cache-entry> 元素會快取在預設的快取實例中。
<cache-instance> 元素中的任何 <cache-entry> 元素都是快取到 <cache-instance> 元素 name 屬性指定的實例中。
在 <cache-entry> 元素中,有一些參數可供您完成下列作業,以利用 cachespec.xml 檔來啟用動態快取:
程序
- 開發 cachespec.xml 檔。
- 建立一個快取配置檔。
在 <app_server_root>/properties 目錄中,找出 cachespec.sample.xml 檔。
- 將 cachespec.sample.xml 檔,複製到 Web 模組 WEB-INF 或 Enterprise Bean META-INF 目錄中的 cachespec.xml。
- 定義識別可快取物件所需的 cache-entry 元素。
請參閱 cachespec.xml 檔主題,以取得元素清單。
- 開發快取 ID 規則。
如果要快取物件,WebSphere® Application Server 必須知道如何針對該物件不同次的呼叫,產生唯一 ID。
<cache-id> 元素執行這個作業。
每一個快取項目可以有多項快取 ID 規則,且這些規則會依序執行,直到有規則傳回非空白的快取 ID 或已無要執行的規則為止。
如果沒有任何快取 ID 產生規則產生有效的快取 ID,就不會快取物件。
請利用兩種方式其中一種來開發快取 ID:
- 使用快取項目的快取原則中所定義的 <component> 元素(建議)。
如需 <component> 元素的相關資訊,請參閱 cachespec_xml 檔主題。
- 撰寫自訂的 Java™ 程式碼,根據輸入變數和系統狀態來建置 ID。
如果要配置快取項目來使用 ID 產生器,請在 XML 檔中,利用 <idgenerator> 標籤來指定 IdGenerator,例如:
<cache-entry>
<class>servlet</class>
<name>/servlet/CommandProcessor</name>
<cache-id>
<idgenerator>com.mycompany.SampleIdGeneratorImpl</idgenerator>
<timeout>60</timeout>
</cache-id>
</cache-entry>
- 指定相依 ID 規則。 請利用相依 ID 元素來指定將多個快取項目關聯於相同群組 ID 的其他快取群組 ID。
將相依 ID 基本字串與其元件元素傳回的值連結起來,會產生相依 ID。
如果必要元件傳回空值,就不會產生也不會使用整個相依 ID。
您可以透過動態快取 API,或使用另一個 cache-entry <invalidation> 元素,來明確驗證相依 ID。
每個快取項目都可以有多個相依 ID 規則。
所有相依 ID 規則都是個別執行。
請參閱 cachespec.xml 檔主題,以取得 <component> 元素清單。
- 如果相關,作為這個物件啟動的負面影響,使其他快取項目失效。 您可以依照相依 ID 完全相同的方式來定義失效規則。
不過,失效規則產生的 ID 是用來使有相同相依 ID 的快取項目失效。
將失效 ID 基本字串與其元件元素傳回的值連結起來,會產生失效 ID。
如果必要的元件傳回空值,既不會產生整個失效 ID,也不會出現失效。
每個 cache-entry 都可以有多個失效規則。
所有失效規則都是個別執行。
- 確定您的快取原則運作正常。 您可以在應用程式執行時,修改 cachespec.xml 檔內的原則。
動態快取會自動重新載入更新的檔案。
如果您是第一次快取靜態內容並將快取原則新增到應用程式中,您必須重新啟動應用程式。
您不需要重新啟動應用程式伺服器來啟動新的快取原則。
請參閱「驗證可快取頁面」主題,以取得相關資訊。
下一步
一般而言,您會在
cachespec.xml 檔內宣告多個
<cache-entry> 元素。
當偵測到新版的 cachespec.xml 時,會取代舊的原則。
透過舊原則檔快取的物件,在快取中不會自動失效;它們會與新原則一起重複使用,或透過快取的取代演算法從快取中刪除。
對於快取項目產生的三個 ID(快取、相依、失效) 來說,<cache-entry> 在每一個 ID 方面都可以包含多個元素。
動態快取會循序執行 <cache-id> 規則,且會利用第一個順利產生 ID 的規則來快取這個輸出。
如果要快取物件,會執行每一個 <dependency-id> 元素來建置一組用於這個快取項目的相依 ID。
最後,不論是否已快取這個物件,都會執行每一個 <invalidation> 元素,以建置一份動態快取要使其失效的 ID 清單。