【发布时间】:2026-01-10 05:25:03
【问题描述】:
我们的应用程序从旧系统导入二进制文件(主要是 PDF),并将它们与一些元数据一起存储在页面上。
如果有更改,页面会自动激活。我们在复制日志中看到复制事件,并且在调度程序上记录了一个无效事件。但是没有驱逐条目,这个旧的二进制文件仍然被缓存。
我们在这些二进制文件容器页面旁边还有 HTML 页面,它们按预期工作。这里是成功的 html 和不成功的 PDF 的两个日志条目:
好的:
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] Found farm website for localhost:81
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] checking [/dispatcher/invalidate.cache]
[Thu Jul 03 09:26:33 2014] [I] [27635(24)] Activation detected: action=Activate [/content/offering/s2p/en/offerings/documents/Swiss_Mandate_Line/Review/test]
[Thu Jul 03 09:26:33 2014] [I] [27635(24)] Touched /app/C2Z/dyn/c2zcqdis/docroot/.stat
[Thu Jul 03 09:26:33 2014] [I] [27635(24)] Evicted /app/C2Z/dyn/c2zcqdis/docroot/content/offering/s2p/en/offerings/documents/Swiss_Mandate_Line/Review/test.html
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] response.status = 200
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] response.headers[Server] = "Communique/2.6.3 (build 5221)"
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] response.headers[Content-Type] = "text/html"
[Thu Jul 03 09:26:33 2014] [D] [27635(24)] cache flushed
[Thu Jul 03 09:26:33 2014] [I] [27635(24)] "GET /dispatcher/invalidate.cache" 200 13 2ms
不行
[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
在这种情况下,PDF 存储在 jcr:content 节点正下方的名为“下载”的节点中。它的 html 容器永远不会直接调用,这在调度程序上不可用。所以用户直接请求文件:
/content/offering/s2p/en/offerings/documents/Swiss_Mandate_Line/Review/as2p_vvm_ch_gl_fix_chf__pdf/jcr%3acontent/download/file.res/as2p_vvm_ch_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_Mandate_Line/Review/as2p_vvm_ch_gl_fix_chf__pdf
知道为什么我们的二进制文件没有被刷新吗?
更新:在另一篇文章中提到了 dispatcher.any 中的 statfileslevel 属性。在我们的环境中,这被注释掉了。难道这可能是问题所在。可悲的是,我不完全理解这应该如何工作。该级别是来自 wwwroot 还是来自激活的页面?
【问题讨论】:
-
感谢 Dave 的格式化,没看到可以这样格式化日志。
标签: aem dispatcher