Preventing redirects from being cached for anonymous users
Solution ended up being an event subscriber with a cacheable response:


&lt;?php


namespace Drupal\news_redirect\EventSubscriber;

use Drupal\Core\Routing\TrustedRedirectResponse;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;


class NewsRedirectSubscriber implements EventSubscriberInterface {

  public function redirectMediaCoverage(GetResponseEvent $event) {

    $node = \Drupal::routeMatch()-&gt;getParameter('node');
    if (isset($node) &amp;&amp; $node instanceof \Drupal\node\NodeInterface) {

      $nodeType = $node-&gt;getType();

      if($nodeType === 'news'){

        $typeID = $node-&gt;news_type_of_content-&gt;target_id;

        if(isset($typeID)){

          $term = \Drupal::entityTypeManager()-&gt;getStorage('taxonomy_term')-&gt;load($typeID);
          $name = $term-&gt;getName();

        }

        if(isset($name) &amp;&amp; $name === "Media Coverage" &amp;&amp; isset($node-&gt;news_source_url-&gt;value)){

          $url = $node-&gt;news_source_url-&gt;value;

          if(isset($url)){

            $response_headers = [
              'Cache-Control' =&gt; 'no-cache, no-store, must-revalidate',
            ];

            $response = new TrustedRedirectResponse($url, '302', $response_headers);
            $response-&gt;addCacheableDependency($node);
            $event-&gt;setResponse($response);
          }

        }

      }

    }

  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[KernelEvents::REQUEST][] = ['redirectMediaCoverage',30];
    return $events;
  }

}