Deliver on HIT, otherwise redirect using "503; Location: ..."

Anton Berezhkov bubonic.pestilence at gmail.com
Sun Dec 18 02:05:39 CET 2016


Hello. Yes, i already did it, and noticed change. But this not what i'm looking for.

As this option doesn't provide: "instantly reply to client Location...", i'm forced to return(deliver).

I'll repeat:
 - If MISS:
 - - Thread #1: start caching data into storage
 - - Main thread: reply to client: synth(503, "Moved Temporarily")

 - If UPDAING:
 - - Main thread: reply to client: synth(503, "Moved Temporarily")

 - If HIT:
 - - Main thread: serve cached data

And beresp.do_stream is just non-blocking IO. While i'm looking for "Detaching backend-to-cache-routine into different thread, while main thread responses to client 'Location: http://backend/$req.url'"

> On Dec 18, 2016, at 3:58 AM, Mark Staudinger <mark.staudinger at nyi.net> wrote:
> 
> Hi Anton,
> 
> Have you looked into the "do_stream" feature of Varnish?  This will begin serving the content to the visitor without waiting for the entire object to be downloaded and stored in cache.  Set in vcl_backend_response.
> 
> https://github.com/mattiasgeniar/varnish-4.0-configuration-templates/blob/master/default.vcl
> 
> Cheers,
> Mark
> 
> On Sat, 17 Dec 2016 19:05:48 -0500, Anton Berezhkov <bubonic.pestilence at gmail.com> wrote:
> 
>> Hello.
>> 
>> Switched to Varnish from Nginx for additional functionality and better control of handling requests.
>> But still can't implement what i want. And I want simple behaviour "Redirect on MISS/PASS".
>> I want to use VC for deploying quick "cdn" servers for our mp4-video-servers (used for HTML5 players), without need to store all files on this quick (ssd, upto 2x480GB space, full database about 6TB).
>> 
>> Currently we have 6 servers with SATA HDDs and hitting iowait like a trucks :)
>> 
>> Examples:
>> - Request -> Varnish -> HIT: serve it using Varnish.
>> - Request -> Varnish -> MISS: start caching data from backend, and instantly reply to client: `Location: http://backend/$req.url"
>> - Request -> Varnish -> UPDATE: see `-> MISS` behaviour.
>> 
>> From my perspective, i should do this "detach & reply redirect" somewhere in `vcl_miss` OR `vcl_backend_fetch`, because if i understood correctly https://www.varnish-cache.org/docs/4.1/reference/states.html, i need vcl_backend_response to keep run in background (as additional thread) while doing return(synth(...)) to redirect user.
>> 
>> Similiar thing is "hitting stale content while object is updating".
>> But in my case "replying redirect while object is updating".
>> 
>> Also, i pray to implement this without writing additional scripts, why? I could do external php/ruby checker/cache-pusher with nginx & etc. But scared by performance downgrade :(
>> _______________________________________________
>> varnish-misc mailing list
>> varnish-misc at varnish-cache.org
>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc




More information about the varnish-misc mailing list