Strange Issue with cache and logged in users
Pinakee BIswas
pinakee at waltzz.com
Thu May 26 16:07:02 CEST 2016
Further adding the observations with the following scenario:
1. Visit URL A-not-loggedin
2. Visit URL B-not-loggedin
3. User logs in
4. Visit URL A after logging in - varnish is serving the page -
A-not-loggedin
5. Visit URL B after logging in - varnish is serving the page
B-not-loggedin
This means Varnish is serving the pages just visited (till cache expiry)
irrespective of the fact that the page is being fetched from backend and
that there is a pass in vcl_recv.
I am unable to understand the above mentioned behavior - the VCL logic I
used is simple as mentioned in the mail below.
Regards,
Pinakee
On 26/05/16 6:24 pm, Pinakee BIswas wrote:
> Hi,
>
> I am facing a strange problem with Varnish cache. Ours is an ecommerce
> site wherein users can visit with or without logging in. I have
> written the VCL to unset cookies when user not logged in.
>
> The scenario is user logs in and then logs out. When the user logs
> out, Varnish is still delivering logged in pages to the user which is
> strange as the requests for logged in users go all the way to the
> backend and the pages are not supposed to get cached. I have been
> looking into this since quite some time and still not able to figure
> out the reason.
>
> Would appreciate any help.
>
> Thanks,
>
> Pinakee
>
> PFA the output from varnishlog.
>
> Following is the VCL code:
>
> sub vcl_recv {
> # Happens before we check if we have this in cache already.
> #
> # Typically you clean up the request here, removing cookies you
> don't need,
> # rewriting the request, etc.
> set req.backend_hint = uwsgi;
>
> if (req.method == "GET") {
> if ((req.http.Cookie !~ "sessionid=") &&
> (req.http.Cookie !~ "loggedin_user=") &&
> (req.url !~ "^/esi")) {
> unset req.http.cookie; # strip the cookies - we don't
> need them
> }
> }
> }
>
> sub vcl_backend_response {
> # Happens after we have read the response headers from the backend.
> #
> # Here you clean the response headers, removing silly Set-Cookie
> headers
> # and other mistakes your backend does.
> if (bereq.method == "GET") {
> set beresp.do_esi = true;
> if ((beresp.http.Set-Cookie !~ "jivaana_user=") &&
> (beresp.http.Set-Cookie !~ "sessionid=") &&
> (bereq.http.Cookie !~ "sessionid=") &&
> (bereq.http.Cookie !~ "jivaana_user=") &&
> (bereq.url !~ "^/product/addtobasket")) {
> #unset beresp.http.Set-Cookie;
> set beresp.uncacheable = false;
> return(deliver);
> }
> }
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20160526/c64d16d5/attachment.html>
More information about the varnish-misc
mailing list