作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我是一名优秀的程序员,十分优秀!