Hi! It's seems to be correct. Be careful with cacheable and ttl=0 answers.
Some simple debuging: sub vcl_fetch { # Varnish determined the object was not cacheable if (!obj.cacheable) { set obj.http.X-Cacheable = "No"; } elsif (obj.ttl > 0s) { set obj.http.X-Cacheable = "Yes"; } else { set obj.http.X-Cacheable = "Yes: ttl=0"; } [...] } Good luck! On dl, feb 01, 2010 at 09:42:58 +0100, Luc Stroobant wrote: > Hello list, > > I have a vcl-config with a snippet like the one on: > http://varnish-cache.org/wiki/VCLExampleLongerCaching > > sub vcl_fetch { > if (obj.cacheable) { > unset obj.http.expires; > set obj.http.cache-control = "max-age = 900"; > set obj.ttl = 2w; > set obj.http.magicmarker = "1"; > } > } > > sub vcl_deliver { > if (resp.http.magicmarker) { > /* unset marker and serve it for upstream as new */ > unset resp.http.magicmarker; > set resp.http.age = "0"; > } > } > > We used that in an attempt to override the expires headers from static > files for a site and keep them in Varnish cache. We don't want to cache > an dynamic (PHP) page. > > At first sight, everything went fine. But once the load rised a bit, we > noticed that dynamic pages are sometimes cached. > I've been checking the headers and it looks like the expires header for > dynamic pages is also removed. I don't think the headers from the > (first) request below should be considerd obj.cacheable according to > the definition on http://varnish-cache.org/wiki/VCL > Or did I miss something? Is this a mistake in my config or a possible > Varnish issue? > > Test without the vcl snippet. > PHP page: unmodified headers and not cached, as expected: > > HTTP/1.1 200 OK > Server: Apache/2.2.3 (CentOS) > X-Powered-By: PHP/5.2.12 > Set-Cookie: SESSbc5f9ce1c97eee1824d1ab6sdfsdfssf70k2hqq7mgo6; > expires=Wed, 24-Feb-2010 22:58:21 GMT; path=/; domain=removed > Expires: Sun, 19 Nov 1978 05:00:00 GMT > Last-Modified: Mon, 01 Feb 2010 19:25:01 GMT > Cache-Control: store, no-cache, must-revalidate > Cache-Control: post-check=0, pre-check=0 > Content-Type: text/html; charset=utf-8 > Content-Length: 56194 > Date: Mon, 01 Feb 2010 19:25:02 GMT > X-Varnish: 963899298 > Age: 0 > Via: 1.1 varnish > Connection: close > > > With the config: > PHP page, Expires header removed and cache-control is set > > HTTP/1.1 200 OK > Server: Apache/2.2.3 (CentOS) > X-Powered-By: PHP/5.2.12 > Set-Cookie: SESSbc5f9ce1c97eee1824d1ab670ce3057b=91dpgvghvkmonso1; > expires=Wed, 24-Feb-2010 23:21:04 GMT; path=/; domain=removed > Last-Modified: Mon, 01 Feb 2010 19:47:44 GMT > Content-Type: text/html; charset=utf-8 > Content-Length: 59418 > cache-control: max-age = 900 > Date: Mon, 01 Feb 2010 19:47:48 GMT > X-Varnish: 1790685114 > Via: 1.1 varnish > Connection: close > age: 0 > > I used the same VCL-code in vcl_fetch for both examples and for static > files, everything works as expected. Any ideas? > (Running on Varnish 2.0.6) > > Luc > > sub vcl_recv { > > # Add a unique header containing the client address > remove req.http.X-Forwarded-For; > set req.http.X-Forwarded-For = client.ip; > > /* Don't cache accept */ > if (req.http.host ~ "^some.host$") { > return (pass); > } > > if (req.url ~ "\.(css|js|jpg|jpeg|gif|ico|png)$") { > unset req.http.cookie; > lookup; > } > > /* Never cache php files... */ > if (req.url ~ ".*\.php") { > return (pass); > } > > /* ... or Apache server status */ > if (req.url ~ ".*/server-status$") { > return (pass); > } > } > _______________________________________________ > varnish-misc mailing list > varnish-misc@projects.linpro.no > http://projects.linpro.no/mailman/listinfo/varnish-misc -- Antoni Villalonga i Noceras / root / New Technologies / Dorna Sports S.L. Tel. +34 934 702 885 / Fax. +34 934 737 779 Narcís Monturiol 2, 08960, Sant Just Desvern - Spain http://www.motogp.com http://www.dorna.com ***************************** DISCLAIMER ***************************** This message is intended exclusively for the named person. It may contain confidential, propietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please immediately delete it and all copies of it from your system, destroy any hard copies of it an notify the sender. Your must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. Please note that internet e-mail neither guarantees the confidentiality nor the proper receipt of the message sent. If the addressee of this message does not consent to the use of internet e-mail, please communicate it to us immediately. **************************** AVISO LEGAL ***************************** Este mensaje es solamente para la persona a la que va dirigido. Puede contener información confidencial o legalmente protegida. No hay renuncia a la confidencialidad o privilegio por cualquier transmisión mala/errónea. Si usted ha recibido este mensaje por error, le rogamos que borre de su sistema inmediatamente el mensaje asi como todas sus copias, destruya todas las copias del mismo de su disco duro y notifique al remitente. No debe, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes de este mensaje si no es usted el destinatario. Nótese que el correo electrónico via Internet no permite asegurar ni la confidencialidad de los mensajes que se transmiten ni la correcta recepción de los mismos. En el caso de que el destinatario de este mensaje no consintiera la utilización del correo electrónico via Internet, rogamos lo ponga en nuestro conocimiento de manera inmediata. ********************************************************************** _______________________________________________ varnish-misc mailing list varnish-misc@projects.linpro.no http://projects.linpro.no/mailman/listinfo/varnish-misc