使用此任务定义 cachespec.xml(在 Web 模块 WEB-INF 或企业 Bean META-INF 目录中找到)中可高速缓存对象。
开始之前
启用动态高速缓存。请参阅“使用动态高速缓存服务”文章,以了解更多信息。
关于此任务
您可将全局 cachespec.xml 保存在应用程序服务器属性目录中,但是建议的方法是将高速缓存配置文件与部署模块放置在一起。cachespec.xml 文件的根元素是 <cache>,它包含 <cache-entry> 元素。
避免故障: 在应用程序服务器属性目录中存在全局
cachespec.xml 文件并且应用程序中存在
cachespec.xml 文件的情况下,会合并 2 个
cachespec.xml 文件中的条目。如果 2 个文件中存在有冲突的条目,那么
应用程序的
cachespec.xml 文件中的条目优先于该应用程序的全局
cachespec.xml 文件中的条目。
gotcha
<cache-entry> 元素可以嵌套在 <cache> 元素或 <cache-instance> 元素中。嵌套在 <cache> 元素中的 <cache-entry> 元素在缺省的高速缓存实例中被高速缓存。任何在 <cache-instance> 元素中的 <cache-entry> 元素在 <cache-instance> 元素的名称属性中指定的实例中被高速缓存。
在 <cache-entry> 元素中是一些允许您完成下列任务以使用 cachespec.xml 文件来启用动态高速缓存的参数:
过程
- 开发 cachespec.xml 文件。
- 创建高速缓存配置文件。
在 <app_server_root>/properties 目录中,找到 cachespec.sample.xml 文件。
- 将 cachespec.sample.xml 文件复制到 Web 模块 WEB-INF 或企业 Bean META-INF 目录中的 cachespec.xml。
- 定义要识别可高速缓存对象所需的 cache-entry 元素。
请参阅 cachespec.xml 文件主题以查看这些元素的列表。
- 开发高速缓存标识规则。
要高速缓存对象,WebSphere® Application Server 必须了解如何为此对象的不同调用生成
唯一标识。<cache-id> 元素执行此任务。每个高速缓存条目使多个高速缓存标识规则依次运行,直到规则返回非空高速缓存标识,或不再有仍要运行的规则。如果无高速缓存标识生成规则产生有效高速缓存标识,那么不高速缓存此对象。以两种方法之一开发高速缓存标识:
- 使用高速缓存条目的高速缓存策略中定义的 <component> 元素(建议)。有关
<component> 元素的更多信息,请参阅 cachespec_xml 文件主题。
- 编写定制 Java™ 代码,以便根据输入变量和系统状态来构建标识。要将高速缓存条目配置为使用标识生成器,请使用 <idgenerator> 标记在 XML 文件中指定您的 IdGenerator,例如:
<cache-entry>
<class>servlet</class>
<name>/servlet/CommandProcessor</name>
<cache-id>
<idgenerator>com.mycompany.SampleIdGeneratorImpl</idgenerator>
<timeout>60</timeout>
</cache-id>
</cache-entry>
- 指定依赖项标识规则。 使用依赖项标识元素指定将多个高速缓存条目关联到同一组标识的其他高速缓存组标识。
通过将依赖项标识基本字符串连接到组件元素返回的值,生成依赖项标识。如果必需组件返回空值,那么不会生成和使用整个依赖项标识。您可以通过动态高速缓存 API 显式地验证依赖项标识,或者使用另一个 cache-entry <invalidation> 元素。每个高速缓存条目可存在多个依赖项标识规则。所有的依赖项标识规则单独运行。请参阅 cachespec.xml 文件主题以查看 <component> 元素的列表。
- 此对象启动的副作用是使其他高速缓存条目无效(如果相关)。 您可使用与依赖项标识完全相同的方式定义失效规则。但是,无效规则生成的标识用于使具有那些相同依赖项标识的高速缓存条目无效。
通过将失效标识基本字符串连接到组件元素返回的值,以生成失效标识。如果必需组件返回空值,那么不会生成整个失效标识,而且没有失效发生。每个高速缓存条目可存在多个无效规则。所有无效规则单独运行。
- 确保您的高速缓存策略正常工作。 当您的应用程序正在运行时,您可以在 cachespec.xml 文件中修改策略。动态高速缓存自动重新装入已更新的文件。
如果您正在第一次高速缓存静态内容,以及将高速缓存策略添加到应用程序,那么必须重新启动应用程序。您不需要重新启动应用程序服务器来激活新的高速缓存策略。请参阅“验证可高速缓存页”主题,以了解更多信息。
下一步做什么
通常,您在
cachespec.xml 文件中声明多个
<cache-entry> 元素。
当检测到新版本的 cachespec.xml 时,替换旧策略。从旧策略文件高速缓存的对象不会自动从高速缓存失效;他们可由新策略重用,或通过其替换算法从高速缓存中消除。
对于高速缓存条目生成的三个标识(高速缓存、依赖项、失效)中的每一个,<cache-entry> 可包含多个元素。动态高速缓存按顺序运行 <cache-id> 规则,并且将成功地生成标识的第一个规则用于高速缓存该输出。如果要高速缓存对象,将运行 <dependency-id> 元素中的每一个元素,以构建用于此高速缓存条目的一组依赖项标识。最后,运行每个 <invalidation> 元素,构建动态高速缓存无效的标识列表,无论是否高速缓存此对象。