How to make Varnish not caching response if they do not have proper cache header?

Jonathan Matthews contact at jpluscplusm.com
Sun Mar 25 12:10:19 CEST 2012


On 25 March 2012 05:15, Ryan Chan <ryanchan404 at gmail.com> wrote:
> Seems Varnish is caching too aggressively, e.g. I have a index.php does not
> send out last-modifieid,cache-control, Varnish still cache it.
>
> my default.vcl
>
> backend default {
>     .host = "127.0.0.1";
>     .port = "8080";
> }
>
> Is it possible to turn off this strange behaviors?

Your responses are probably being cached because of the default
default_ttl setting, which you'll find detailed a little way down
https://www.varnish-cache.org/docs/3.0/reference/varnishd.html#run-time-parameters.

However, rather than changing that run-time setting, you may want to
force Varnish always to contact the back-end next time for those
resources which don't dictate an explicit TTL. This would be both more
visible and more tunable, later on.

This VCL would achieve that goal, I believe (untested, but taken from the docs):

sub vcl_fetch {
  if (beresp.ttl <= 0s) {
    # Mark as "Hit-For-Pass" for the next 2 minutes
    set beresp.ttl = 120s;
    return (hit_for_pass);
  }
}

HTH,
Jonathan
-- 
Jonathan Matthews
London, Oxford, UK
http://www.jpluscplusm.com/contact.html



More information about the varnish-misc mailing list