Varnish 从不发送If-Not-Modified

标签 varnish varnish-vcl varnish-4

我正在尝试使用 Varnish 来缓存rpm和其他巨型二进制文件。我所期望的是,当对象在缓存中过期时,varnish会将带有If-Not-Modified的请求发送到后端,然后假设该对象没有变化,varnish会刷新本地缓存对象上的ttl而不下载新的。我写了一个测试后端来生成特定的请求(设置小的max-age和诸如此类的东西,以及查看头 Varnish 发送的消息),但是除了完全获取之外,我什么也没得到。永远不会发送If-Not-Modified。我的VCL基本上是默认的VCL。我尝试设置小ttl/宽限期,但没有任何有趣的行为。

Varnish 甚至能够做到我想要的吗?如果是这样,是否有人做过类似的事情并可以给出提示?

最佳答案

当对象过期时发送到后端的请求是 Varnish 从客户端收到的请求。

那么在测试您的设置时,您是否在向 Varnish 的请求中发送 If-Not-Modified header ?

查看 https://www.varnish-software.com/wiki/content/tutorials/varnish/builtin_vcl.html 以了解内置的 VCL 是什么。

vcl_backend_fetch 下,如果缓存中没有对象,就会调用它,您可以看到陈旧对象周围没有复杂的逻辑,它只是按原样传递请求。

关于 Varnish 从不发送If-Not-Modified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898698/

相关文章:

varnish - 跨多个服务器共享 Varnish 缓存

varnish - 修改Varnish默认文件后出现Err_Connection_Refused

caching - Varnish 3.0 返回 503 错误

varnish - 通过varnishadm禁用 Varnish 健康检查

caching - Varnish 在请求中混合用户代理

varnish - 防止将cookie "x-bni-ci"清除到 Varnish 中

linux - 通过网络连接到 Varnish 4 管理界面

php - 错误 503 后端获取失败

varnish - Varnish 缓存中的无限重定向循环

linux - 我正在尝试安装 Varnish