apache - 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
流程基本上是这样的:
- 我使用https://ip:443/en-us/ 之类的 URL 访问 Apache
- 路径被重写为 /content/some/other/path
- Apache 在端口 4503 上命中 AEM 到路径 /content/some/other/path
- 我的网络应用程序返回 200,包括我放在上面的标题
- Apache 将看到它的缓存不包含 /content/some/other/path 的条目,并将为其创建一个缓存条目。
- 接下来也是最后,Apache 返回 200。
当我再次点击 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”吗?
解决方案
这是调度程序的正常行为。您必须配置Edge-Cache-Tag
为缓存的标头之一。
该
/headers
属性允许您定义将由 Dispatcher 缓存的 HTTP 标头类型。在对未缓存资源的第一次请求时,与其中一个配置值(请参阅下面的配置示例)匹配的所有标头都存储在缓存文件旁边的单独文件中。在对缓存资源的后续请求中,将存储的标头添加到响应中。
推荐阅读
- nlp - 如何在训练 word2vec 模型时提高谷歌类比任务的准确性?
- c++ - C++获取地图的关键字
- windows - 如何在批处理中移动以特定字符串开头的文件夹
- java - 使用 google guava 时无法推断类型变量 V
- flutter - Flutter 在将数据发送到服务器时出现 _InternalLinkedHashMap 错误
- jquery - 根据第一个的输入触发第二个 ajax 函数
- php - 如何在回复时附加线程消息,以便新用户可以在 Gmail Api 中看到以前的对话
- angular - Angular 8 观察本地存储的变化
- r - 在 R 中,如何选择/子集具有大于某个值的值的站点,但然后保留所有包含小于所选值的值的站点?
- neo4j - 远程 neo4j gremlin 结果不一致