Varnish not completely loading page from IE 7 browser

Caunter, Stefan scaunter at
Fri Feb 4 17:58:29 CET 2011

We need to know which version of varnish.


Which  exact version of IE7? Does the page call external components?
Anything https? Are the back ends the same? Is there a load balancer?


Stefan Caunter 


Torstar Digital

m: (416) 561-4871



From: varnish-misc-bounces at
[mailto:varnish-misc-bounces at] On Behalf Of Bacion, Ray
Sent: February-03-11 2:01 PM
To: 'varnish-misc at'
Cc: OA.Lampadmins
Subject: Varnish not completely loading page from IE 7 browser


Hello, we have installed Varnish on one of our RedHat 5 Linux machines.
I have pasted the configuration below.    I did remove the real
hostnames and IP addresses from the configuration.


The configuration works fine with Mozilla for sites I have defined, but
on IE 7 the "hostname1" site does not completely load.   I see the
favicon.ico and the title of the page, but the site continues to load
without completing or sometimes completing after a long time (minute
plus) to load.   The second site "shared_73_165" loads just fine.  


Please note a week ago I had the same sites defined, but IE had problems
loading the "shared_73_165" site but loaded the "hostname1" site just
fine.   I assume there is some slight difference in the configuration
between this week and last to make this change occur, but I don't know
what it would be.    Mozilla has always loaded both sites fine.



I am having trouble identifying the root cause of the problem.   Can
anyone help me with trying to determine why IE 7 is taking so long to
complete the loading of the page if it completes at all?   


I can also add that a when I look at the varnishncsa output I see that
with IE 7 that not all of the elements on the HTML page are being
requested, but through Mozilla I do see all the requests.   I can also
tell you both sites work fine if I bypass Varnish.   It also does appear
that IE 8 has the same issue although I have not tested with it as much
as I have IE 7.


Any help that someone can provide would be appreciated?




backend hostname1





backend shared_73_165






sub vcl_recv


  # Set Backend Server

  if ( ~ "^"     || ~
"^")              { set req.backend = hostname1;  }

{ set req.backend = shared_73_165; }


  # Set HTTP Header NS-Client-IP so Apache can log client's IP address.

  set req.http.NS-Client-IP = client.ip;


  # If HTTP Header Cache-Contro="no-cache" then purge any cache page
that may exist for that URL and pass request on.

  if (req.http.Cache-Control ~ "no-cache") { purge_url(req.url);
return(pass); }


  # If request is not a valid HTTP Method pipe it to the backend it is
not cacheable.

  if (req.request!="GET"    && req.request!="HEAD"    &&
req.request!="PUT"     && req.request!="POST" &&

      req.request!="TRACE"  && req.request!="OPTIONS" &&

  { return (pipe); }  /*Non-RFC2616*/


  # If request is not a GET or a HEAD then pass it through since its not

  if (req.request!="GET" || req.request!="HEAD") { return (pass); }


  # Unset cookies on Drupal specific files that should be cached.

  if (req.url ~ "^/(files|misc|sites|themes|modules)/" || req.url ~
"\.(txt|ico)$") { unset req.http.Cookie; }


  # If request requires Authentication or has a Cookie then it is not

  if (req.http.Authorization || req.http.Cookie) { return (pass); }


  # Normalize and compress content if Encoding starts with gzip or
defalte but do not compress binary files.

  # @see:

  if (req.http.Accept-Encoding) {

    if    (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") { remove
req.http.Accept-Encoding; }

    elsif (req.http.Accept-Encoding ~ "gzip")   {set
req.http.Accept-Encoding = "gzip"; }

    elsif (req.http.Accept-Encoding ~ "deflate"){set
req.http.Accept-Encoding = "deflate"; }

    else                                        {unset
req.http.Accept-Encoding; }



  # If requested page is currently being processed on another thread to
a backend server,  server cached page if its not older than 30s.

  set req.grace = 30s;


  # Fall back to the default vcl_recv which will call the



sub vcl_pipe


  set req.http.connection = "close";

  # Fall back to the default vcl_pipe which will call return(pipe);



sub vcl_fetch


  # If the response from the backend is not a 200, 203, 300, 301, 302,
404 or 410.

  if (!beresp.cacheable) { return (pass); }


Raymond Bacion 


ITSD Operating System Group 
Phone: (573) 522-1468 
Fax :    (573) 522-1384 
Email:  Ray.Bacion at 






-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the varnish-misc mailing list