CQ/AEM调度程序不刷新二进制文件

CQ/AEM调度程序不刷新二进制文件,aem,dispatcher,Aem,Dispatcher,我们的应用程序从遗留系统导入二进制文件(主要是PDF),并将它们与一些元数据一起存储在页面上 如果有更改,页面将自动激活。我们在复制日志中看到复制事件,并且在dispatcher上记录了一个失效事件。但是没有逐出条目,旧的二进制文件仍然被缓存 我们在这些二进制文件的容器页面旁边也有HTML页面,它们可以正常工作。以下是成功html和失败PDF的两个日志条目: 好 啊: 不好 本例中的PDF存储在jcr:content节点正下方名为“下载”的节点中。它的html容器从未被直接调用,并且在dispa

我们的应用程序从遗留系统导入二进制文件(主要是PDF),并将它们与一些元数据一起存储在页面上

如果有更改,页面将自动激活。我们在复制日志中看到复制事件,并且在dispatcher上记录了一个失效事件。但是没有逐出条目,旧的二进制文件仍然被缓存

我们在这些二进制文件的容器页面旁边也有HTML页面,它们可以正常工作。以下是成功html和失败PDF的两个日志条目:

好 啊: 不好 本例中的PDF存储在jcr:content节点正下方名为“下载”的节点中。它的html容器从未被直接调用,并且在dispatcher上不可用。因此,用户直接请求该文件:
/content/offering/s2p/en/offices/documents/Swiss_command_Line/Review/as2p_vvm_chu gl_fix_chf_pdf/jcr%3acontent/download/file.res/as2p_vvm_chu gl_fix_chf.pdf

在dispatcher.any中,我们在激活时刷新所有html页面,但不刷新二进制文件。对于测试,我们添加了一个allow*.pdf,但这没有任何帮助

/invalidate
{
/0000
  {
  /glob "*"
  /type "deny"
  }
/0001
  {
  /glob "*.html"
  /type "allow"
  }
}
在我看来,invalidate调用应该只删除整个文件夹:
/content/offering/s2p/en/offerings/documents/Swiss\u委托书\u Line/Review/as2p\u vvm\u ch\u gl\u fix\u chf\u pdf

知道为什么我们的二进制文件不会被刷新吗


更新:在另一篇帖子中,提到了dispatcher.any中的
statfileslevel
属性。在我们的环境中,这被注释掉了。这可能是问题所在吗。可悲的是,我不完全明白这是怎么回事。级别是指wwwroot还是激活的页面?

不确定这是否是根本原因,但我怀疑您可能需要做的是转到localhost:4503/etc/replication/agents.publish.html(注意,这是一个发布实例,您可以在作者身上执行,也可以复制复制代理等,但出于POC的目的,只需直接在发布服务器上执行即可。)

然后转到dispatcher flush agent,并单击编辑设置

转到触发器面板

确保选中了“接收时”触发器。这样做的目的是启用链复制,这意味着当直接资源发布时,它将直接从调度程序中删除,导致下一个请求失败,从而从调度程序中提取新的副本

请注意,这种刷新不同于stats文件级刷新,后者只刷新目录,而不是资产的完全限定路径


顺便说一句,这不是统计文件级别。如果被注释掉,统计文件级别默认为0,这将使下面的任何内容无效。您似乎要查找的是缓存的活动删除。这是可能的,正如Dave在本文中针对一个不相关的问题向我概述的:

一种方法是创建一个flush拦截器。本质上是发布服务器上的一个自定义servlet。然后,您要做的是配置普通flush replicator来调用发布服务器上的本地servlet

然后servlet检测是否需要删除目录或其中的任何特定文件。它可以将刷新路径转换为所需路径,并使用删除操作代替刷新操作

将刷新发送到正常调度程序位置仍然非常重要


希望这能有所帮助。

看起来您的dispatcher flushing问题在于文件的服务路径使用了
jcr%3acontent
,而它应该使用
\uJCR\uContent

Dispatcher flushing删除正在刷新的路径下的文件夹
\u jcr\u content
。它不会删除
jcr%3acontent
(URL解码为
jcr:content
)。因此,您应该改为使用以下URL提供pdf:
/content/offering/s2p/en/offices/documents/Swiss_command_Line/Review/as2p_vvm_ch_gl_fix_chf_pdf/_jcr_content/download/file.res/as2p_vvm_ch_gl_fix_chf_.pdf

这将在以下位置缓存pdf文件:
{CACHEROOT}/content/offering/s2p/en/offices/documents/Swiss_command_Line/Review/as2p_vvm_ch_gl_fix_chf_pdf/_jcr_content/download/file.res/as2p_vvm_ch_fix_chf.pdf

然后,当刷新此路径时,它将删除刷新路径下的子目录
\u jcr\u content
/content/offering/s2p/en/offerings/documents/Swiss\u委托书\u Line/Review/as2p\u vvm\u ch\u gl\u fix\u chf\u pdf

更详细地说,当您对上面的路径发出刷新请求时,将删除以下文件和目录:

  • /content/offering/s2p/en/offerings/documents/Swiss_command_Line/Review/as2p_vvm_ch_gl_fix_chf_pdf.
    其中*为通配符
  • /content/offering/s2p/en/offerings/documents/Swiss_委托书_Line/Review/as2p_vvm_ch_gl_fix_chf_pdf/_jcr_content
有关冲洗工作原理的详细信息,请参见本演示文稿中的幻灯片23:

谢谢你的格式化,Dave,我看不出你可以像这样格式化日志。谢谢你的回答,但是“收到时”检查了,正如我提到的,我们这里没有DAM资产,但是直接连接到页面的二进制文件。当然,只有页面被激活,期望在dispatcher上生成的整个文件夹结构也被逐出,不幸的是,事实并非如此。添加了另一种方法并解释了统计文件级别。感谢s输入,我将在下周尝试,并让您知道它是否有效。成功地测试了它。再次感谢您的提示。
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] Found farm website for localhost:81 
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] checking [/dispatcher/invalidate.cache] 
[Thu Jul 03 09:30:45 2014] [I] [27635(24)] Activation detected: action=Activate [/content/offering/s2p/en/offerings/documents/Swiss_Mandate_Line/Review/as2p_vvm_ch_gl_fix_chf__pdf] 
[Thu Jul 03 09:30:45 2014] [I] [27635(24)] Touched /app/C2Z/dyn/c2zcqdis/docroot/.stat 
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] response.status = 200 
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] response.headers[Server] = "Communique/2.6.3 (build 5221)" 
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] response.headers[Content-Type] = "text/html" 
[Thu Jul 03 09:30:45 2014] [D] [27635(24)] cache flushed 
[Thu Jul 03 09:30:45 2014] [I] [27635(24)] "GET /dispatcher/invalidate.cache" 200 13 1ms
/invalidate
{
/0000
  {
  /glob "*"
  /type "deny"
  }
/0001
  {
  /glob "*.html"
  /type "allow"
  }
}