gpt4 book ai didi

tomcat - mod_cache 返回 "broken expires header"

转载 作者:行者123 更新时间:2023-11-28 22:51:18 27 4
gpt4 key购买 nike

我在 tomcat 服务器前使用 apache2 作为 loadbalancerfrontend-proxy,通过 mod_ajp 连接。现在,我想添加缓存。

不幸的是,tomcat 服务器的应用程序发回了很多 header ,根据 RFC,这阻止了像 pragma: no-cache 等缓存。但主要问题是错误消息:

HTTP/1.1 200 OK
Date: Thu, 18 Aug 2016 09:44:33 GMT
Server: Apache/2.4.10 (Debian)
X-Magnolia-Registration: Registered
Set-Cookie: JSESSIONID=xxxxxxx; Path=/form-cms/; Secure; HttpOnly
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-Encoding: gzip
Vary: Accept-Encoding
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Last-Modified: Thu, 18 Aug 2016 09:44:33 GMT
Content-Language: en
X-Cache: MISS from fqdn.example.com
X-Cache-Detail: "Broken expires header: Thu, 01 Jan 1970 00:00:00 GMT" from fqdn.example.com
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8

缓存配置如下所示:

CacheRoot "/var/cache/apache2/mod_cache_disk"
CacheDirLevels 2
CacheDirLength 1
CacheMaxExpire 60
CacheDefaultExpire 60

CacheHeader on
CacheDetailHeader on

CacheIgnoreHeaders Expires
CacheIgnoreCacheControl on

CacheStoreNoStore On
CacheStorePrivat On

CacheQuickHandler off
<LocationMatch "^/my-app/.*">
CacheEnable disk
</LocationMatch>

我不知道如何解决这个问题,无法更改应用程序在 tomcat 服务器上的行为。我试图通过 mod_headers 取消设置 expires-header,但无济于事。

有什么想法吗?

最佳答案

当 Magnolia 返回资源并想通知浏览器它不应该被缓存时,它会设置几个 header :pragma: no-cachecache-control: no-storeExpires: Thu, 01 Jan 1970 00:00:00 GMT header 。

由于第一个 unix 时间戳是 01/01/1970 12:00:00 am,mod_cache apache 模块确实给出了一个broken expires header 消息。

解决方案是更改 Magnolia 的 BrowserPolicy 设置以包含 FixedDuration expires header ,但不缓存任何其他内容。

关于tomcat - mod_cache 返回 "broken expires header",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com