【问题标题】:Make Nginx caching respect cache-control headers使 Nginx 缓存尊重缓存控制标头
【发布时间】:2017-01-10 07:27:08
【问题描述】:

Nginx 可以缓存内容,即充当反向代理,但清除时间必须在 Nginx 配置中固定。

有没有办法让 Nginx 根据上游应用服务器的缓存控制头自动清除?

【问题讨论】:

  • nginx 已经这样做了。 nginx.org/r/proxy_cache_valid缓存参数可以设置在头域“Expires”或“Cache-Control”中。
  • 可能是。我读到这是不可能的(找不到源atm)。你试过了吗?我想知道它如何解决 nginx 配置中定义的缓存限制和标头中的缓存限制。例如它会忽略 nginx 配置长度还是应用两个值的最小值。
  • “缓存的参数也可以直接在响应头中设置。这比使用指令设置缓存时间具有更高的优先级。”

标签: performance http caching nginx reverse-proxy


【解决方案1】:

在研究了这个问题之后,我发现它没有得到很好的记录,因为大多数人似乎都关心 CMS,很容易说“缓存一天的文章”,但对于可能根据每个请求而有所不同的动态应用服务器来说,情况就不那么好了。

几个选项是:

  • Nginx Plus
  • Ngx Cache Purge module,虽然 2 年没有更新了
  • 如果可能的话,定义多个具有不同到期时间的缓存并按路径以不同方式应用它们。
  • 忘记在 Nginx 上进行缓存,并在其前面放置像 Varnish 这样的服务器。

更新:进一步看,我现在认为 proxy_cache_valid 甚至不需要存在。如果上游没有缓存控制/到期,它只是设置默认到期。如果没有 proxy_cache_valid,Nginx 仍然会认为内容是陈旧的,但不会立即被清除。它在缓存中保留陈旧内容(由“inactive”参数和可选的 proxy_cache_valid 确定)的原因是它可以使用 proxy_cache_use_stale 提供陈旧内容(如果上游出现错误很有用)。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多