Dispatcher缓存文件意外更新 | AEM
通过收集有关缓存失效请求和内容请求的日志来查找模式。 在“解决方案”部分中查看3种不同的方案。
描述 description
环境
Adobe Experience Manager (AEM)
问题
有时Dispatcher缓存文件会以意外的时间或频率更新。
解决方法 resolution
发布内容后,Adobe Experience Manager (AEM)会向Dispatcher发送缓存失效请求(GET/dispatcher/invalidate.cache)。 之后,当对内容的请求到达Dispatcher时,它会更新其缓存文件。
基于此行为,通过收集有关缓存失效请求和内容请求的日志来寻找模式。
无效请求的示例日志:
Dispatcher - access_log
127.0.0.1 - - [ 07/Jun/2022:13:44:35 +0900] "GET /dispatcher/invalidate.cache HTTP/1.1" 200 13 "about:blank" "Jakarta Commons-HttpClient/3.1"
Dispatcher - dispatcher.log
[ 07/Jun/2022:13:44:35 +0900] "GET /dispatcher/invalidate.cache HTTP/1.1" 200 purge [ publish/-] 0ms
Publish - error.log
07.06.2022 13:44:35.750 *INFO* [ sling-threadpool-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-(apache-sling-job-thread-pool)-1-com_day_cq_replication_job_flush(com/day/cq/replication/job/flush)] com.day.cq.replication.Agent.flush Sending GET request to http://localhost:80/dispatcher/invalidate.cache
...
07.06.2022 13:44:35.758 *INFO* [ sling-threadpool-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-(apache-sling-job-thread-pool)-1-com_day_cq_replication_job_flush(com/day/cq/replication/job/flush)] com.day.cq.replication.Agent.flush Replication (ACTIVATE) of /content/xx-xxxxxx/us/en/products successful.
原因
以下是Dispatcher缓存文件意外更新的典型情况。
案例1 — 意外内容的频繁缓存更新
缓存文件更新频繁,但更新内容不是缓存失效请求的目标。
在这种情况下,Dispatcher配置中的/statfileslevel值可能太低。 请注意,在dispatcher.any中标注出/statfileslevel表示该值为“0”。
当您具有 /statfileslevel "0" 并发布内容时,无论路径如何,所有缓存文件都将失效。 以下《AEM Dispatcher指南》中的链接描述了详细信息:
配置Dispatcher — 按文件夹级别使文件失效
案例2 — 来自不受欢迎的客户端的缓存失效请求
Dispatcher配置可能对缓存失效请求没有适当的限制。 检查dispatcher.any.中的/allowedClients
案例3 — 没有缓存失效请求
Dispatcher配置可能使用基于时间的缓存失效。 在这种情况下,/enableTTL "1"应存在于dispatcher.any.中