title: Getting delay on HLS with varnish cache
body: <p>I'm using varnish as a cache for my live streaming content. I have on the backend a video server (Mistserver) with HLS output on port 8090. I've configured varnish in the following way:</p>
  
  <pre><code>`vcl 4.0;
  import std;
  backend default {
      .host = "127.0.0.1";
      .port = "8090";
  }
  acl purge {
      "127.0.0.1";
  }
  sub vcl_recv {
      if(req.method == "PURGE"){
          if (!client.ip ~ purge) {
              return(synth(405,"Not allowed."));
          }
          return (purge);
      }
      return (hash);
  }
  sub vcl_hash {
     return (lookup);
  }
  sub vcl_hit {
      if (obj.ttl &gt;= 0s) {
          return (deliver);
      }
      if (std.healthy(req.backend_hint)) {
          if (obj.ttl + 10s &gt; 0s) {
              return (deliver);
          }
          else {
              return(fetch);
          }
      }
      else {
          if (obj.ttl + obj.grace &gt; 0s) {
              return (deliver);
          }
          else {
              return (fetch);
          }
      }
      return (fetch); # Dead code, keep as a safeguard
  }
  sub vcl_purge{
  }
  sub vcl_pipe {
      return (pipe); 
  }
  sub vcl_init {
      return (ok);
  }
  sub vcl_fini {
      return (ok);
  }
  sub vcl_backend_response {
      set beresp.http.Access-Control-Max-Age = 15;
      set beresp.ttl = 15s;
      set beresp.grace = 15s;
  }`
  </code></pre>
  
  <p>And varnish is being executed with a thread pool timeout of 30 seconds:</p>
  
  <p>/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/user.vcl -S /etc/varnish/secret -s malloc,1G -t 3 -p thread_pool_timeout=30</p>
  
  <p><strong>The Problem:</strong> The content is being cached, apparently, correctly. But after some time the stream is running, I'm getting a difference of time with the original stream of 5 minutes. so for example if the live stream has time 22:25, I might see in the output stream the time 22:20. I can't have such a time difference in a live stream.</p>
  
  <p>I've tried purging the cache, but didn't work. Sometime it is correclty synchronized, If I restart both video server and varnish. <strong>What I need is to avoid caching for mor than 1 minute or less</strong>.</p>
  
  <p>What am I doing wrong?</p>
  
  <p>Thanks Indeed</p>