首页 > 解决方案 > Apache 在缓存中删除或删除或不存储标头(Edge-Cache-Tag)

问题描述

我有一个奇怪的情况,Apache 2.4 不会从其缓存中返回标头。我有一个处于发布者模式的 AEM 实例,将这些标头作为其响应的一部分返回:

Date: Fri, 22 May 2020 22:26:21 GMT
X-Content-Type-Options: nosniff
Edge-Cache-Tag: /en-us/
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked

流程基本上是这样的:

当我再次点击 Apache 到https://ip:443/en-us/时,它以 200 响应,但它没有返回“Edge-Cache-Tag”标头。我知道响应来自缓存,因为首先,我在缓存中看到“/content/some/other/path”的条目,如果我使用https://ip:443/en-us/ 访问 Apache? foo=bar(一个绕过缓存的查询参数),头部回来了,这意味着响应实际上来自 Web 应用程序,因为查询参数使 Apache 绕过缓存。

我不明白为什么 Apache 从其响应中删除“Edge-Cache-Tag”。我已经检查了我所有的 Apache 配置,并且我没有删除标头的单一指令(例如未设置的标头)。Apache 不能缓存“Edge-Cache-Tag”吗?

标签: apachecachingheaderaemcache-control

解决方案


这是调度程序的正常行为。您必须配置Edge-Cache-Tag为缓存的标头之一。

https://docs.adobe.com/content/help/en/experience-manager-dispatcher/using/configuring/dispatcher-configuration.html

/headers属性允许您定义将由 Dispatcher 缓存的 HTTP 标头类型。在对未缓存资源的第一次请求时,与其中一个配置值(请参阅下面的配置示例)匹配的所有标头都存储在缓存文件旁边的单独文件中。在对缓存资源的后续请求中,将存储的标头添加到响应中。


推荐阅读