我试图使用varnish来缓存rpms和其他巨型二进制文件。我所期望的是,当一个对象在缓存中过期时,清漆会向后端发送一个If-Not-Modified的请求,然后假设该对象没有改变,varnish会刷新ttl本地缓存对象,无需下载新对象。我写了一个测试后端来生成特定的请求(设置小的max-age和诸如此类,以及查看标头清漆发送)但是我从来没有得到任何其他任何东西然后完全获取。永不发送If-Not-Modified。我的VCL基本上是默认的VCL。我试着设置小ttl / grace,但从来没有任何有趣的行为。
清漆甚至可以做我想要的吗?如果是这样,任何人都做过类似的事情,可以给出提示吗?
答案 0 :(得分:0)
当对象过期时发送到后端的请求是Varnish从客户端收到的请求。
因此,在测试您的设置时,您是否在向Varnish发送请求时发送了If-Not-Modified
标题?
查看https://www.varnish-software.com/wiki/content/tutorials/varnish/builtin_vcl.html,了解内置的VCL是什么。
在vcl_backend_fetch
下,如果缓存中没有对象,将调用它,您可以看到过时对象周围没有复杂的逻辑,它只是按原样传递请求。