Hi to all , i'm using varnish-3.0.5 and i have a strange behaviour. The problem is that pass decided in vcl_recv trigger a deliver and not an hit_for_pass or pass by default if i set beresp.ttl in the vcl_fetch. Doing deliver, the object is cached and i don't want to cache it , wasting memory or disk space used for storage backend.
According to https://www.varnish-software.com/static/book/VCL_Basics.html "If you chose to pass the request in an earlier VCL function (e.g.: vcl_recv), you will still execute the logic of vcl_fetch, but the object will not enter the cache even if you supply a cache time." So as i understand a previous pass decision , like in a vcl_recv , must trigger a pass also in vcl_fetch even if i set a ttl in beresp.ttl . example with the config in the bottom and not working as documented: wget -nd -S http://www.mysite.com/robots.txt 10 RxRequest c GET 10 RxURL c /robots.txt 10 RxProtocol c HTTP/1.1 10 RxHeader c User-Agent: Wget/1.16 (linux-gnu) 10 RxHeader c Accept: */* 10 RxHeader c Host: www.mysite.com 10 RxHeader c Connection: Keep-Alive 10 VCL_call c recv pass 10 VCL_call c hash 10 Hash c /robots.txt 10 Hash c www.mysite.com 10 VCL_return c hash 10 VCL_call c pass pass 10 Backend c 13 mysite mysite 10 TTL c 1449425053 RFC 1209600 -1 -1 1416500172 0 1416500848 1417710448 1209600 10 VCL_call c fetch 10 TTL c 1449425053 VCL 604800 -1 -1 1416500172 -0 10 TTL c 1449425053 VCL 604800 86400 -1 1416500172 -0 10 VCL_return c deliver commenting in vcl_fetch section "set beresp.ttl = 1w" vcl_fetch respects the pass decision decided in vcl_recv but the problem is that i want set beresp.ttl to me needs and that what reported in the link maybe is not correct. 4 RxRequest c GET 4 RxURL c /robots.txt 4 RxProtocol c HTTP/1.1 4 RxHeader c User-Agent: Wget/1.16 (linux-gnu) 4 RxHeader c Accept: */* 4 RxHeader c Host: www.mysite.com 4 RxHeader c Connection: Keep-Alive 4 VCL_call c recv pass 4 VCL_call c hash 4 Hash c /robots.txt 4 Hash c www.mysite.com 4 VCL_return c hash 4 VCL_call c pass pass 4 Backend c 13 mysite mysite 4 TTL c 380775699 RFC 1209600 -1 -1 1416500647 0 1416501323 1417710923 1209600 4 VCL_call c fetch 4 TTL c 380775699 VCL -1 86400 -1 1416500647 -0 4 TTL c 380775699 VCL 120 86400 -1 1416500647 -0 4 VCL_return c hit_for_pass Any suggestion ? ########### sub vcl_recv { if (req.http.host ~ "^(?i)(www\.mysite\.com|mysite\.com)$") { set req.backend = mysite; if (req.url == "/robots.txt" ) { return (pass); } return(lookup); } else { #Di default i siti non gestiti dal Varnish error 404 "Not Found"; } if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { /* Non-RFC2616 or CONNECT which is weird. */ return (pipe); } if (req.request != "GET" && req.request != "HEAD") { /* We only deal with GET and HEAD by default */ return (pass); } if (req.http.Authorization || req.http.Cookie) { /* Not cacheable by default */ return (pass); } return (lookup); } sub vcl_fetch { set beresp.storage = "othersram"; if (beresp.backend.name ~ "mysite") { set beresp.storage = "mysitedisk"; remove beresp.http.Cache-Control; remove beresp.http.Pragma; remove beresp.http.Expires; set beresp.ttl = 1w; set beresp.storage = "mysitedisk"; set beresp.grace = 1d; } } _______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
