没有缓存控制头的清漆行为

时间:2015-06-10 12:29:34

标签: java caching varnish

我只是为我的团队设置了清漆。我想知道:如果我的应用程序当前没有发送任何cache-control标头,那么清漆缓存的行为是什么。它是否仍然缓存,或者我们需要显式发送带有cache-control值的max-age标头,以便varnish可以缓存它。我已设置清漆来缓存200,404,400状态代码响应。感谢。

1 个答案:

答案 0 :(得分:2)

这取决于许多因素:Varnish将缓存客户端发送Coookie标头的任何请求,或者服务器发送带有Set-Cookie的响应头。您也无法缓存POST请求,因为它们不是幂等的。

也就是说,如果请求已附加cookie,并且是GET请求,则默认情况下,varnish设置为缓存120秒的请求。这由varnish中的default_ttl设置决定,并且仅适用于varnish中可缓存的请求(即使没有设置cache-control标头)。

来自Varnish文档:

  

Cache-Control标头可以包含许多标头。 Varnish评估它并寻找s-maxage和max-age。如果找到,它会将TTL设置为s-maxage的值。如果未找到s-maxage,则将使用max-age。如果两者都不存在,它将使用Expires标头来设置ttl。 如果这些标头都不存在,则会使用默认TTL

https://www.varnish-software.com/static/book/VCL_Basics.html