Hi
I am facing an issue where Varnish sends a "If-Modified-Since" header for a 
cache-miss object.

I will briefly describe the system architecture and the problem for your 
reference. I have varnish logs saved and can share them as well.


1)      We have 4 varnish instances running on machine each fetching requests 
from one backend server. We also have a load balancer in front of these 4 
varnishes.

2)      We start Varnish processes using : varnishd -f /etc/varnish/default.vcl 
-s malloc,2G -T 127.0.0.1:2001 -a 0.0.0.0:8081 -n v1
(similarly for v2, v3 and v4). This should make sure that the caches are in 
memory and exclusive to each varnish instance.

3)      We get 200 OK for a URL, and it's there on delivered from the varnish 
cache; suddenly we get a 304 Not modified in one of the clients and that messes 
up our playback (this is usually when varnish is under load)

4)      On analysis, I figured out that If-Modified-Since header was received 
at the server end (I can see the header in the Apache logs), since the object 
was not modified, server returned a 304.

But till then the object was available in the varnish cache. Did Varnish try to 
invalidate it's cache (as the object ttl was set to 2 seconds). If it did so, 
shouldn't it keep the object in cache if the server returns a 304?

5)      I don't see client adding this header

6)      If I do varnishlog -b, I see a request for this URL from varnish(say 
v1) to backend and also this was a cache miss.

My doubt here is, how does Varnish add If-Modified-Since header if it was a 
cache miss?


Thanks
Karishma
_______________________________________________
varnish-misc mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to