【发布时间】:2013-01-09 15:25:27
【问题描述】:
我想禁用 CQ 组件中的缓存,我的 jsp (documentation) 中有以下行:
response.setHeader("Dispatcher", "no-cache");
如果我将组件插入页面并将页面加载到创作实例中,一切都会按预期工作,我会得到一个名为 Dispatcher 的 HTTP 标头,内容为 no-cache。
现在,如果我在发布实例上执行相同操作(与 CQ_RUNMODE='publish' 和相同内容的相同配置)组件可以工作,但用于设置 HTTP 标头。
知道为什么这两个实例的行为会不同吗?
更新
我尝试设置其他标头,但实例的行为方式相同:在创作模式下,标头不是在发布模式下生成的(相同的配置,但针对 CQ_RUNMODE)
更新 2
我试图通过从页面中删除所有不必要的内容(布局、页眉代码、页脚......)来减少我的示例,我注意到在一定大小阈值之后我的页眉会正确生成。
换句话说,通过从页面中删除内容(甚至是简单的 HTML),我到达了出现标题的某个点(如果页面足够小)。
知道为什么 CQ 只为非常小的页面生成标题吗?
【问题讨论】:
-
也许这是一个太明显的建议——但是您的注入标头的代码是否有可能包含在某种
<c:if test="${ global['wcmmode'] eq 'EDIT'}">测试中? -
@DavidGorsline 感谢您的建议。我检查了代码,没有条件。
setHeader之前和setHeader之后的语句正确执行。 -
关于您的更新 2,我怀疑页面大小会有所不同 - 当您删除某个组件(包含的脚本等)时,标题再次起作用的可能性更大。
-
@BertrandDelacretaz 不,我只是删除了一个简单的 HTML 行(甚至是一个段落),然后标题重新出现。我还看到有关丢失块的错误。只要页面小于 HTTP 块,它就可以工作。
标签: aem