AWS ALB 设置 Cache-Control 私有 max-age header

AWS ALB setting Cache-Control private max-age header

我有一个 Symfony 3 应用程序部署在一个 AWS Beanstalk 实例上,一个 EC2 实例位于应用程序负载均衡器后面,因为我使用 HTTP/2。

我发现负载均衡器有一个奇怪的问题 however.I 知道它不应该设置任何缓存 headers,但出于某种原因它 does.On 我的测试机器,使用相同的代码,我将此 header 与响应一起发送:

cache-control:private

但是在 AWS 服务器上发送的是 header:

cache-control:private, max-age=86400

这破坏了我的应用程序,因为我不希望客户端的浏览器缓存响应,因为我的应用程序只能通过登录访问 users.The 我发现解决这个问题的唯一方法是在在将响应发送回客户端之前我的 app.php 文件:

$response->headers->removeCacheControlDirective('private');

这将 no-cache 指令添加到 cache-control header 以防止浏览器缓存响应,但我不确定这是否是正确的方法,因为 AWS 应用程序仍然发送 max-age 指令,我不确定 no-cache 指令是否会覆盖所有浏览器中的其他指令。

修复后这是我从我的服务器得到的:

cache-control:no-cache, private

这来自 AWS:

cache-control:no-cache, private, max-age=86400

TL/DR:所以,我想问的是,有没有办法从 AWS 服务器发送的内容中删除 max-age 指令?

谢谢,我使用 Whosebug 多年,但这是我第一次提出问题,因为我在任何地方都找不到答案。

所以我终于找到了答案,事实证明它与AWS无关...... 这样做的原因是在我的 .htaccess 文件中我有一个 mod_expires 指令,上面有这一行:

ExpiresByType text/html "access plus 1 days"

将缓存 header 添加到所有 html 页面...由于某种原因,我在 Linux 或 Windows 上的 Apache 都没有 mod_expires 但是 AWS 的网络服务器有它...