nginx - Nginx缓存:如何忽略'no-cache'但尊重'max-age'就像它是'public'?
问题描述
我想发送给浏览器Cache-Control: no-cache,max-age=120;
,因此他们必须重新验证才能使用缓存副本,但这使得Nginx实际上不缓存任何东西,或者至少总是不缓存MISS
。
而且我不能使用proxy_ignore_headers “Cache-Control”;
,因为我必须尊重max-age
,并且max-age
由上游服务器控制,每种类型的页面都有不同的页面并且可能随着时间的推移而变化,所以它必须由主服务器控制。
应该如何配置才能得到这个?
PD:或者一种让 Nginx 尊重一些自定义 X-Cache-Control 标头的方法,并使用单独的标头来控制代理和浏览器的缓存。
PD2:我做了这个,显然它有效,但我希望有一个更“官方”的方式:
proxy_hide_header Cache-Control;
proxy_hide_header maxage;
add_header Cache-Control "no-cache,max-age=$upstream_http_maxage";
解决方案
我认为而不是proxy_hide_header
你应该使用proxy_ignore_headers
更新:
并根据https://stackoverflow.com/a/9232739/279564,您必须同时使用两者。
推荐阅读
- types - 从 HashMap 转换
输入] - docker - 我可以将带有 vs2019 的控制台应用程序容器化到 ACR 中吗,似乎只有 dotnetcore Web 应用程序可以工作
- javascript - 如何从元素中获取属性?
- bash - 当键是已知字符串时,使用 jq 删除键/值对
- kubernetes - 在 k8s 上运行的 Thingsboard
- swift - 如何解决 Carthage 和 Swift 版本的错误?
- oauth-2.0 - 授予 Keycloak 客户端服务帐户权限以创建领域用户,而无需使用广泛的管理用户角色
- tabulator - 制表器可能的错误 - 存在嵌套表时添加列计算时出错
- excel - 如何在excel中将例如“12/31/2018”转移到“2018Q4”?
- assembly - TASM 中的虚拟键盘