【问题标题】:JSF 2.0 -- Share or Prime OmniFaces Combined Resource Cache Across ClusterJSF 2.0 -- 跨集群共享或 Prime OmniFaces 组合资源缓存
【发布时间】:2012-07-21 19:04:24
【问题描述】:

在 JSF 中有没有一种方法可以跨集群使用组合资源?基本上,我正在寻找一种解决方案,在该解决方案中,集群中引入资源的第一台服务器可以将其同步到其他服务器的资源缓存中。

【问题讨论】:

  • 你指的是什么资源?
  • @Adrian:/resources文件夹中的文件由ResourceHandler处理。
  • 为什么需要缓存同步,因为只有静态资源会被缓存?
  • 在 Omnifaces 的情况下,CombinedResourceHandler 在呈现包含 h:outputScript 或 h:outputStylesheet 资源的页面时将组合的 CSS/JS 资源引入资源缓存。因此,如果对 xhtml 页面的请求进入一台服务器,该服务器将处理组合资源并将其放入资源缓存中,但如果对资源本身的 http 请求进入另一台服务器,则不一定可用,因此我的问题。我把它概括了,因为我认为可能会有其他应用程序。

标签: jsf jsf-2 resources cluster-computing omnifaces


【解决方案1】:

这是不可能的,因为组合资源的唯一 ID 是基于 MD5 生成的,这是一种不可逆的单向加密。因此,如果资源是在服务器 X 上创建并在服务器 Y 上请求的,那么服务器 Y 将无法根据唯一 ID 从缓存中解析资源。

自 OmniFaces 1.2 以来,已通过将 MD5 方法替换为 ZLIB 和 Base64 的组合来解决此问题,这使其简短且可逆。服务器 Y 现在将能够根据 ID 自行解析资源,然后将其存储在缓存中。

顺便说一句,Base64 编码方法还有一个步骤,即用~-_ 替换/+= 字符以使其变为URL-safe这样它就可以在没有任何平台敏感的 URL 编码麻烦的情况下通过 URL 传递。

【讨论】:

  • Omnifaces 越来越棒了。您确实使我的软件堆栈变得无限好。我永远感激不尽。
猜你喜欢
  • 2012-10-20
  • 2018-09-06
  • 2020-04-18
  • 2010-11-02
  • 1970-01-01
  • 2011-05-07
  • 2017-04-27
  • 2012-10-30
  • 1970-01-01
相关资源
最近更新 更多