架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

配置 Edge Side Include (ESI)高速缓存[转]

Posted on 2009-04-21 01:26  chen eric  阅读(1676)  评论(0编辑  收藏  举报
2008-10-29 15:01

WebSphere Application Server

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/tdyn_esiedgecaching.html

Web 服务器插件包含内置 ESI 处理器。ESI 处理器能高速缓存整个页面及片段,提供较高的高速缓存命中率。ESI 处理器实现的高速缓存是内存高速缓存,而不是磁盘高速缓存,因此,在重新启动 Web 服务器时,不会保存高速缓存条目。

关于本任务

通过 plugin-cfg.xml 文件配置 Edge Side Include(ESI)。

当请求由 Web 服务器插件接收时,它发送到 ESI 处理器,除非禁用 ESI 处理器。缺省情况下,它已启用。如果发生高速缓存不命中,Surrogate-Capabilities 头添加到请求,而请求转发到 WebSphere Application Server。如果在应用程序服务器中启用 servlet 高速缓存,而且响应是边缘可高速缓存的,那么应用程序服务器在响应中将 Surrogate-Control 头返回给 WebSphere Application Server 插件。

Surrogate-Control 响应头的值包含 ESI 处理器用于生成高速缓存标识的规则列表。然后,响应存储到 ESI 高速缓存中,使用高速缓存标识作为密钥。对于响应主体中的每个 ESI include 标记,处理新请求,以致每个嵌套的 include 导致高速缓存命中或另一个请求转发到应用程序服务器。当所有嵌套的 include 已处理时,页面会组装并返回到客户机。

ESI 处理器可通过 WebSphere Web 服务器插件配置文件 plugin-cfg.xml 进行配置。以下是此文件开始处的示例,其说明 ESI 配置选项。
<?xml version-"1.0"?>
<Config>
<Property Name="esiEnable" Value="true"/>
<Property Name="esiMaxCacheSize" Value="1024"/>
<Property Name="esiInvalidationMonitor" Value="false"/>

过程

  • 第一个选项 esiEnable 可用于通过将值设置为 false,以禁用 ESI 处理器。缺省情况下,ESI 已启用。如果禁用 ESI,那么忽略其他 ESI 选项。
  • 第二个选项 esiMaxCacheSize 是高速缓存的最大大小,以 1K 字节单位计。高速缓存的缺省最大大小为 1 兆字节。如果高速缓存已满,那么从高速缓存中逐出的第一个条目是最接近到期的条目。
  • 第三个选项 esiInvalidationMonitor 指定 ESI 处理器是否从应用程序服务器接收失效。当使用遵循线程技术模型的 Web 服务器并且仅启动一个进程时,ESI 能够很好地工作。当启动了多个进程,每个进程高速缓存各自响应并且不共享高速缓存。这可能导致系统的内存被 ESI 处理器完全耗尽的情况。从 ESI 高速缓存除去条目的方法有三种:第一种,发生条目的截止超时;第二种,可清除条目,以将空间留给较新的条目;或者第三种,应用程序服务器可为条目组发送显式失效。为了启用第三个机制,esiInvalidationMonitor 属性必须设置为 true,DynaCacheEsi 应用程序必须安装在应用程序服务器上。DynaCacheEsi 应用程序位于 installableApps 目录中,而且名为 DynaCacheEsi.ear。如果 ESIInvalidationMonitor 属性设置为 true,但是未安装 DynaCacheEsi 应用程序,那么 Web 服务器插件中将发生错误,而且请求将失败。
  • 在分布式平台上,会通过 CacheMonitor 应用程序来监视 ESI 处理器的高速缓存。为了让 ESI 处理器高速缓存在 CacheMonitor 中可视,必须按上述的那样安装 DynaCacheEsi 应用程序,而且必须在 plugin-cfg.xml 文件中将 ESIInvalidationMonitor 属性设置为 true。
  • 当 WebSphere Application Server 用于维护静态数据(如应用程序服务器上的图像和 HTML)时,URL 也在ESI 处理器中进行高速缓存。此数据具有缺省超时 300 秒。您可通过将属性 com.ibm.servlet.file.esi.timeOut 添加到 Java 虚拟机(JVM)命令行参数,来更改超时值。 以下示例显示如何在静态数据(在插件中进行高速缓存)上设置一分钟超时:
    -Dcom.ibm.servlet.file.esi.timeOut=60

    有关配置备用 URL 的信息,请参阅配置备用 URL