Just a thought, if you're going to force an otherwise uncacheable request to be cached, you should probably: set beresp.uncacheable = false;
On Thu, Jul 20, 2017 at 9:03 PM, Girouard, Yanick <[email protected]> wrote: > Hi Reza, > > > > Yes we are. Here's the default we apply. Those two subs are called in > order in vcl_backend_response: > > > > /* REMOVE CACHE-CONTROL AND SURROGATE-CONTROL FROM BACKEND * > > ***********************************************************/ > > sub stm_backend_resp_unset_cache_control_headers { > > unset beresp.http.Surrogate-Control; > > unset beresp.http.Cache-Control; > > unset beresp.http.Expires; > > } > > > > /* DEFAULT ALL TO: TTL 30MIN + GRACE 15MIN * > > *******************************************/ > > sub stm_backend_resp_expiration_default { > > set beresp.ttl = 30m; > > set beresp.grace = 15m; > > } > > > > That doesn't seem to have any impact when the backend responds with a > Cache-Control: max-age=0 header. > > > > Any idea? > > > > > > *De :* Reza Naghibi [mailto:[email protected]] > *Envoyé :* jeudi 20 juillet 2017 13:58 > *À :* Girouard, Yanick <[email protected]> > *Cc :* [email protected] > *Objet :* Re: Varnish and max-age=0 > > > > The TTL is calculated before entering vcl_backend_response. So eventhough > you unset the Cache-Control header, the value of TTL will be calculated > based on it. Are you setting a new value for beresp.ttl? You need to do > that: > > > > sub vcl_backend_response > > { > > unset beresp.http.Cache-Control; > > set beresp.ttl = 120s; > > } > > > -- > Reza Naghibi > Varnish Software > > > > On Thu, Jul 20, 2017 at 1:44 PM, Girouard, Yanick < > [email protected]> wrote: > > Hi, > > > > We use Varnish to cache for multiple backends and need Varnish to *always* > control what is cached despite what backends could respond. In other words, > even if a backend sets Cache-Control headers to never cache its pages, we > still want Varnish to cache them based on defined rules (i.e. certain URL > patterns or hosts have different TTLs). > > > > We have recently realized that one of our backend always set the following > header: *Cache-Control: max-age=0, private, must-revalidate* > > > > Our VCL unsets the Cache-Control header in vcl_backend_response and sets > its own before delivering. By unsetting the Cache-Control header in > vcl_backend_response I would expect Varnish to ignore the max-age=0 value > and still cache the page as per our other rules, but it seems that the > second it sees max-age=*0 *in the response header, that it makrs the > object as not cacheable. > > > > Other than by changing the backend's response to never set max-age=0, is > there a way to force Varnish to cach pages even if it returned max-age=0? > > > > Is this even by design or is it a bug? > > > > Thanks, > > *Yanick Girouard* > > > > > _______________________________________________ > varnish-misc mailing list > [email protected] > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc > > > > _______________________________________________ > varnish-misc mailing list > [email protected] > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc >
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
