<span id="mailbox-conversation"></span><br><br><div class="gmail_quote"><p>On Fri, Jun 6, 2014 at 10:37 PM, Ameir Abdeldayem <span dir="ltr"><<a href="mailto:ameirh@gmail.com" target="_blank">ameirh@gmail.com</a>></span> wrote:<br></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr"><font face="verdana, sans-serif"><div>
<div style="color:rgb(52,52,52)">Hello Maxim,</div>
<div style="color:rgb(52,52,52)"><br></div>
<div style="color:rgb(52,52,52)">Thanks for your feedback.  Yes, "proxy_cache_use_stale updating" does do a great job, but "the first request" is the first request per TTL, which relates to the problem we're facing.  </div>
<div style="color:rgb(52,52,52)"><br></div>
<div style="color:rgb(52,52,52)">We run some high-profile sites, oftentimes with low TTLs (1m or so).  The queries we run on the backend are very complex and time-consuming, and oftentimes take on the order of 10s to complete.  Because of the low TTL, although most users get immediate responses, the user who makes the request when the entry is EXPIRED has to suffer.  </div>
<div style="color:rgb(52,52,52)"><br></div>
<div style="color:rgb(52,52,52)">Additionally, each page load requests several resources through nginx, and it's happened a number of times that a single user will be the victim of hitting more than one EXPIRED entry, hitting the backend more than once (very unlucky, I know).  The end result is user complaints, which would be mitigated entirely if we could serve the STALE entry before updating it.</div>
</div>
<div style="color:rgb(52,52,52)"><br></div>
<div style="color:rgb(52,52,52)">If you have any thoughts on how to improve performance in this scenario, I would love to hear them.</div>
<div style="color:rgb(52,52,52)"><br></div>
<div style="color:rgb(52,52,52)">Thanks!</div>
<div style="color:rgb(52,52,52)">-Ameir</div>
<div><br></div></font></div></blockquote></div><br>