【问题标题】:Hippo cms cache method河马cms缓存方法
【发布时间】:2015-11-12 13:54:24
【问题描述】:

Hippo cms 使用什么样的缓存?

我在官方页面上找到了一些关于捆绑缓存的信息,但我不知道信息存储在哪里以及如何取出它们。

主要问题是我需要在很多 Hippo cms 应用程序实例之间同步 L2cache。

【问题讨论】:

    标签: caching hippocms


    【解决方案1】:

    Hippo CMS 在整个架构的多个不同级别实现了缓存。请务必记住,Hippo 堆栈有 3 个主要组件:

    1. 内容存储库(由 RDBMS 支持)
    2. Hippo 交付层 (HST)
    3. Hippo CMS 用户界面

    我的假设是您可能正在尝试为应用程序的交付部分执行此操作。让我们采用自下而上的方法,看看有哪些不同类型的缓存可用。

    1. 内容存储库将来自持久层的原始数据缓存在捆绑缓存中。这是 Apache Jackrabbit 提供的内存缓存,它的大小可以在 repository.xml 中配置。如果您将其与 Hibernate 进行比较,您已经可以将其视为 L2 缓存,因为它由所有 JCR 会话共享。您可以在 corresponding documentation page 上找到有关如何调整此缓存的更多信息。

    2. Hippo 交付层使用从存储库配置和四种不同缓存派生的几个内存模型表示:二进制缓存、WebFiles 缓存、节点缓存和页面缓存。

      二进制缓存用于缓存存储在内容存储库中的静态资源,例如 PDF 和图像。它可以配置为从内存或磁盘提供服务。二进制缓存在后台使用 Ehcache。有关如何配置或指定自己的缓存的更多信息,请访问here

      WebFiles Cache 还用于缓存存储库中的静态资源,但它不是典型的用户内容,如 PDF 和图像,而是更多的开发人员静态 webapp 内容。

      节点缓存缓存从内容存储库检索到的各个 JCR 节点的内容。这包括实际的内容项(文档)以及存储在存储库中的配置,例如网页布局和 URL 映射。当存储库中的原始节点被修改时,观察模式用于使节点缓存条目失效。

      页面缓存缓存完整的聚合页面。这意味着只要不对构成页面的内容和配置进行任何修改,就可以直接从缓存中提供网页,而无需任何内容检索和页面聚合。一旦其中任何一个被修改,交付层就会通过观察得到通知,并使缓存页面无效。在聚合修改的页面时到达的请求可以被提供一个陈旧的缓存条目,以保持响应时间较短。更多信息可以找到here。页面缓存基于ehcache,可以通过Spring配置进行配置。

    如您所见,有多个级别的缓存可用。您必须记住,如果您有多个 Hippo 实例正在运行,缓存将在所有单个实例上自动失效,因为 Hippo 中的集群和缓存失效是如何工作的,因此最终您甚至可能不需要引入额外的缓存.

    您可以在performance documentation page 上找到更多信息。

    【讨论】:

    • 我可以将缓存方法更改为 memcached 吗?
    • 是的,理论上你应该可以,但你必须自己实现,因为没有默认支持(还)
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2016-11-02
    相关资源
    最近更新 更多