Invalidate single block cache in D7
You may have a look at Block Refresh, and implement your custom logic on top of it whenever you want to send a Cache-Control: max-age=0 :

//Override external cache max age if set
  if (isset($settings[$block_id]['bypass_external_cache']) &amp;&amp; $settings[$block_id]['bypass_external_cache'] != '') {
    drupal_add_http_header('Cache-Control', 'public, max-age=' . intval($settings[$block_id]['bypass_external_cache']));
  }