Caching cq5中的dispatcher中真正缓存了什么?

Caching cq5中的dispatcher中真正缓存了什么?,caching,aem,Caching,Aem,我们为我们的网站开发了页眉和页脚。我们创建了一个内容层次结构,并从一个java服务类访问了内容层次结构,每个级别都有一个java bean来保存值 For ex LevelOneBean.java { string linkName; String linkUrl, List<LevelTwoBean> LeveltwoBeanList; } LevelTwoBean.java { string linkName; String li

我们为我们的网站开发了页眉和页脚。我们创建了一个内容层次结构,并从一个java服务类访问了内容层次结构,每个级别都有一个java bean来保存值

For ex
 LevelOneBean.java 
   { 
     string linkName; String linkUrl, List<LevelTwoBean> LeveltwoBeanList;
   }
 LevelTwoBean.java 
   { 
     string linkName; String linkUrl, List<LevelTwoBean> LevelthreeBeanList;
   }
  LevelThreeBean.java 
   { 
     string linkName; String linkUrl, 
   }
用于ex
LevelOneBean.java
{ 
字符串链接名称;字符串链接URL,列表LeveltwoBeanList;
}
LevelTwoBean.java
{ 
字符串链接名称;字符串链接URL,列表级别ThreeBeanList;
}
LevelThreeBean.java
{ 
字符串链接名称;字符串链接URL,
}
之后,我在我的组件jsp中呈现bean

当我们部署在web服务器上时,发现这两个组件使用了70%的cpu,因此速度很慢。我们有调度程序,页面应该缓存在调度程序中。 我的前辈说,既然你已经创建了JavaBean,JavaBean就不能被缓存。他要求为页眉和页脚创建JSON。Json将在dispatcher级别发生变化。Java bean不会。

我的问题-我想验证我的上述声明。理想情况下,无论呈现设计如何,都应该缓存page get


请帮助理解这一点

在这里调用bean是不相关的。bean通常在JCR部分转换为HTML/CSS/JS期间调用

如果您在JSP转换阶段调用bean,然后根据bean结果提供HTML,那么应该缓存响应

如果已经为浏览器提供了页面,并且您正在进行AJAX调用,则会发出JSON或XML请求,可以将其设置为缓存。默认情况下,JSON和XML未配置为缓存在调度程序中

来自调度程序的JSON回调将命中发布服务器,然后JSP将调用您的bean来呈现响应。同样,它不应该与您的bean有任何关系

在缓存时,唯一需要注意的是触发刷新或清除缓存的操作。如果您正在更新内容,dispatcher的stats文件刷新方法工作得很好。JSON和XML的危险在于,您可能正在合成来自树中多个不同源点的响应,如果它们在内容和JSON路径之间不匹配,缓存可能不会刷新,除非您使用Dispatcher Flush for ACS commons


从你的描述来看,你的粗体陈述毫无意义。我将检查您作为渲染的人工制品生成的内容,以及这些人工制品是否正在被缓存/刷新。

与此问题最相关的是,调用bean(和其他Java技术)来创建JSON。一旦创建,它就可以缓存在中,以便后续请求由调度器而不是发布器提供服务。正如答案所指出的,这并不是默认情况,但了解这可能会澄清问题。通过将结果缓存在dispatcher中,可以防止任何代码在发布服务器上执行。