使用動態快取服務
使用動態快取服務將 Servlet、Web 服務和 WebSphere®Application Server 指令的輸出快取到記憶體中,以增進應用程式效能。
開始之前
關於這項作業
程序
- 按一下伺服器 > 伺服器類型 > WebSphere ® Application Server > server_name > 儲存器服務 > 動態快取服務。
- 配置預設快取實例,或依循鏈結以啟用 Servlet 或 Portlet 快取。 如需預設快取設定的相關資訊,請參閱「動態快取服務設定」一文。
範例
這個範例將使用 cachespec.xml 檔來配置動態快取服務的步驟全部放在一起,並顯示快取 ID 產生規則、相依 ID 及無效規則的使用。
假設 Servlet 管理一個簡易的新聞網站。這個 Servlet 使用查詢參數「action」來判斷要求檢視(查詢參數「view」)新聞或更新項目(查詢參數「update」)新聞(由管理者使用)。另一個查詢參數 "category" 則選取新聞種類。假設此網站支援選用的自訂佈置,而該佈置以屬性名稱「layout」儲存在使用者的階段作業中。以下是傳送到此 Servlet 的 URL 要求範例:
- http://yourhost/yourwebapp/newscontroller?action=view&category=sports (傳回運動種類的新聞頁面)
- http://yourhost/yourwebapp/newscontroller?action=view&category=money (傳回理財種類的新聞頁面)
- http://yourhost/yourwebapp/newscontroller?action=update&category=fashion (容許管理者更新時尚種類的新聞)
下列步驟說明如何使用 cachespec.xml 檔,為這個範例配置動態快取服務:
- 定義識別 Servlet 所需的 <cache-entry> 元素。在此情況下,Servlet 的 URI 是 "newscontroller",因此這是 cache-entry <name> 元素。由於此範例快取 Servlet 或 Java Server Pages (JSP) 檔,因此快取項目類別是 "servlet"。
<cache-entry> <name> /newscontroller </name> <class>servlet </class> </cache-entry>
- 定義快取 ID 產生規則。
此 Servlet 只有在 action=view 時才會快取,因此當值等於「view」時,快取 ID 的其中一個元件是參數「action」。新聞種類也是快取 ID 必不可少的部分。這個快取 ID 中包含使用者佈置的選用階段作業屬性。現在,快取項目為:
<cache-entry> <name> /newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> </cache-entry>
- 定義相依 ID 規則。對於這個 Servlet,會新增種類的相依 ID。
稍後,當種類因更新事件而失效時,該新聞種類的所有視圖會全部失效。
以下是新增相依 ID 之後的快取項目範例:
<cache-entry> <name>newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> <dependency-id>category <component id="category" type="parameter"> <required>true</required> </component> </dependency-id> </cache-entry>
- 定義失效規則。由於定義了種類相依 ID,因此定義失效規則,在 action=update 時,讓種類失效。如果要合併條件式邏輯,請將「ignore-value」元件新增至失效規則中。這些元件不會新增至失效 ID 的輸出中,只是會決定是否要建立及執行失效 ID。現在,最後的快取項目如下所示:
<cache-entry> <name>newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> <dependency-id>category <component id="category" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation>category <component id="action" type="parameter" ignore-value="true"> <value>update</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry>