如果没有适当的缓存头,如何让 Varnish 不缓存响应?

如果没有适当的缓存头,如何让 Varnish 不缓存响应?

似乎缓存是否过于激进,例如我有一个索引.php不发出最后修改ID缓存控制,Varnish仍然缓存它。

我的默认.vcl

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

是否可以关闭这种奇怪的行为?

答案1

Varnish 默认会缓存尽可能多的内容 - 缓存到其守护进程启动时设置的 TTL(生存时间)。

如果您的 index.php 没有发送 Cache-Control 标头,varnish 将尝试缓存它,除非该页面发送(或接收)来自用户的 cookie。

你可以精确控制清漆的作用(对极其使用 Varnish 控制语言来实现精细度;通常将东西放在“vcl_recv”和“vcl_fetch”中。

varnish wiki 非常好,看看配置示例。另外,你还可以通过谷歌搜索找到大量内容!

https://www.varnish-cache.org/trac/wiki/VCL

https://www.varnish-cache.org/trac/wiki/VCLExamples

相关内容