<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <meta charset="utf-8" />
  <meta name="google-site-verification" content="0Zvqk8EoyLzvCzEZj86bw4McxpCrEzUskO2c1n5OqE8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <!-- The 1140px Grid - https://cssgrid.net/ -->
  <link rel="stylesheet" type="text/css" href="/styles/1140.css" media="screen" />
  <link rel="stylesheet" type="text/css" href="/styles/styles.css" media="screen" />
  <!--css3-mediaqueries-js - https://code.google.com/p/css3-mediaqueries-js/ - Enables media queries in some unsupported browsers-->
  <script type="text/javascript" src="/js/css3-mediaqueries.js"></script>
  <link href="https://fonts.googleapis.com/css?family=Droid+Serif:regular,italic,bold" rel="stylesheet">

  <title>Apache Traffic Server</title>

  <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
       See the NOTICE file distributed with this work for additional information regarding copyright ownership.
       The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you
       may not use this file except in compliance with the License.  You may obtain a copy of the License at

           https://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software distributed under the License is
      distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
      or implied.  See the License for the specific language governing permissions and limitations under the
      License. -->


</head>

<body class="container">
  <!-- Header -->
  <div class="row" id="header">
    <div class="fourcol">
      <a href="/"><img class="logo" alt="Apache Traffic Server" src="/images/press/ts_logo_tm_380x73.png" /></a>
    </div>
    <div class="fourcol">
      <a href="https://www.apache.org/"><img alt="The Apache Software Foundation" src="https://www.apache.org/images/feather-small.png" /></a>
    </div>
    <div class="fourcol right last" id="searchbox">
      <form action="https://docs.trafficserver.apache.org/en/latest/search.html" id="cse-search-box" name="cse-search-box">
        <input type="text" name="q" size="22" style="font-size: 80%" />
        <input type="submit" name="sa" value="Search Documentation" style="font-size: 80%" />
      </form>
    </div>
  </div>
  </div>

  <div class="row nav">
    <div class="ninecol">
      <a href="https://trafficserver.apache.org/">Home</a>
      <a href="downloads">Downloads</a>
      <a href="https://docs.trafficserver.apache.org/en/latest/index.html">Documentation</a>
      <a href="https://cwiki.apache.org/confluence/display/TS/Apache+Traffic+Server">Wiki</a>
      <a href="https://github.com/apache/trafficserver/issues">Issues</a>
      <a href="https://ci.trafficserver.apache.org/">CI</a>
      <a href="/users.html">Customers</a>
      <a href="/acknowledgements.html">Acknowledgements</a>
      <a href="/press.html">Press kit</a>
      <a href="/assistance.html">Assistance</a>
    </div>
    <div class="threecol last right">
      <a href="https://apache.org/security/">Security</a>
      <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
      <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
    </div>
  </div>

  <div class="row content">
    <div class="eightcol">
      <div id="blurbbox">
        <p style="padding-top: 20px;">Apache Traffic Server™ software is a fast, scalable and extensible HTTP/1.1 and
          HTTP/2 compliant caching
          proxy server. Formerly a commercial product, Yahoo! donated it to the Apache
          Foundation, and currently used by several major CDNs and content owners.</p>
      </div>
    </div>
    <div class="fourcol right last">
      <span id="download">
        <a title="Downloads" href="/downloads">Downloads</a>
      </span>
      <span style="display: table; margin:0 auto;">
        <a href="https://twitter.com/trafficserver" class="twitter-follow-button" data-show-count="false">Follow
          @trafficserver</a>
        <script>!function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https'; if (!d.getElementById(id)) { js = d.createElement(s); js.id = id; js.src = p + '://platform.twitter.com/widgets.js'; fjs.parentNode.insertBefore(js, fjs); } }(document, 'script', 'twitter-wjs');</script>
      </span>
    </div>
  </div>

  <div class="row content">
    <div class="twelvecol banner">
      <h1 id="Overview">Overview</h1>
    </div>
  </div>

  <div class="row content">
    <div class="fourcol">
      <div id="blurbbox">
        <ul>
          <li>
            <b>Caching</b>
            <p>Improve your response time, while reducing server load and bandwidth needs by
              caching and reusing frequently-requested web pages, images, and web service
              calls.</p>
          </li>

          <li>
            <b>Proxying</b>
            <p>Easily add keep-alive, filter or anonymize content requests, or add load
              balancing by adding a proxy layer.</p>
          </li>
        </ul>
      </div>
    </div>

    <div class="fourcol">
      <div id="blurbbox">
        <ul>
          <li>
            <b>Fast</b>
            <p>Scales well on modern SMP hardware, handling 10s of thousands of requests per
              second.</p>
          </li>
          <li>
            <b>Extensible</b>
            <p>APIs to write your own plug-ins to do anything from modifying HTTP headers to
              handling ESI requests to writing your own cache algorithm.</p>
          </li>
        </ul>
      </div>
    </div>

    <div class="fourcol last">
      <div id="blurbbox">
        <ul>
          <li>
            <b>Proven</b>
            <p>Handling over 400TB a day at <a href="https://www.yahoo.com/">Yahoo!</a> both as
              forward and reverse proxies, Apache Traffic Server is battle
              hardened. Also visit our <a href="users.html">Customers page</a> for
              some of our corporate users and supporters.</p>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="row content">
    <div class="twelvecol banner">
      <h1 id="LearnMore">Learn More</h1>
    </div>
  </div>

  <div class="row content">
    <div class="fourcol">
      <div id="blurbbox">
        <div class="banner">
          <h3>Get Support</h3>
        </div>
        <ul class="blurblist">
          <li>
            <p>Having trouble with builds, configurations or are you getting errors you don't understand?
              <a href="mailto:users-subscribe@trafficserver.apache.org">Subscribe</a> to our Users Mailing List
              or join our <b>#traffic-server</b> channel on <a href="https://the-asf.slack.com/" title="Slack">
                The ASF Slack</a> workspace to get help! Use your @apache.org email address to automatically join.
              If you need a workspace invitation, contact us on our devevelop mailing list, or ask any ASF
              committer.</p> 
          </li>

          <li>
            <p>
              Can't get your plugin to work? Have questions about the ATS code? Or maybe you have suggestions for
              improvements or new features? <a href="mailto:dev-subscribe@trafficserver.apache.org">Get help</a>
              from developers or start a discussion on our dev discussion list.</p>
          </li>

          <li>
            <p>
              <a href="https://cwiki.apache.org/confluence/display/TS/Filing+useful+bug+reports">Report</a> or confirm
              bugs or try out the latest patches from our <a href="https://github.com/apache/trafficserver/">Bug
                Tracker</a></p>
          </li>

          <li>
            <p>
              <a href="https://cwiki.apache.org/confluence/display/TS/Filing+useful+bug+reports">Learn how</a> to ask
              <i>good</i> questions, create useful bug reports and how to apply patches.</p>
          </li>
        </ul>
      </div>
    </div>

    <div class="fourcol">
      <div id="blurbbox">
        <div class="banner">
          <h3>Get Involved</h3>
        </div>

        <ul class="blurblist">
          <li>
            <p><a href="mailto:users-subscribe@trafficserver.apache.org">Subscribe</a> and
              help out on the users Mailing List or simply share your usecase or experience.
              For sometimes speedier responses check out our Slack channel
              <b>#traffic-server</b> on <a href="https://the-asf.slack.com/" title="Slack">
                The ASF Slack</a> workspace.
          </li>

          <li>
            <p>
              Impress developers or help others by <a href="mailto:dev-subscribe@trafficserver.apache.org">participating</a>
              on
              our dev discussion list or <a href="mailto:commits-subscribe@trafficserver.apache.org">follow</a> the
              latest development on
              our commits list.</p>
          </li>

          <li>
            <p>
              <a href="https://cwiki.apache.org/confluence/display/TS/Filing+useful+bug+reports">Report</a> issues or
              bring patches to our <a href="https://github.com/apache/trafficserver/">Bug Tracker</a></p>
          </li>

          <li>
            <p>
              Visit our wiki to see a list of
              <a href="https://cwiki.apache.org/confluence/display/TS/Projects" title="Apache Traffic Server - Projects">Projects</a>
              we are currently working on.</p>
          </li>

          <li>
            <p>
              Learn <a href="https://cwiki.apache.org/confluence/display/TS/Contributing">how to create patches</a> to
              the code or the
              documentation and how to debug Apache Traffic Server.</p>
          </li>

          <li>
            <p>We've <a href="https://github.com/apache/trafficserver/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">tagged
                github issues</a> that have a low entrance barrier.</p>
          </li>
        </ul>
      </div>
    </div>
    <div class="fourcol last">
      <div id="blurbbox">
        <div class="banner">
          <h3>Web Resources</h3>
        </div>

        <ul class="blurblist">
          <li>
            <a href="https://docs.trafficserver.apache.org/en/latest/admin-guide/index.en.html">Administrator's Guide</a>
            <p>Installing, configuring and administrating Apache Traffic Server</p>
          </li>

          <li>
            <a href="https://docs.trafficserver.apache.org/en/latest/developer-guide/index.en.html">Developer's Guide</a>
            <p>Developing Apache Traffic Server plug-ins and how the code works</p>
          </li>

          <li>
            <a href="https://cwiki.apache.org/confluence/display/TS/FAQ">Frequently Asked
              Questions</a>
            <p>A running list of your most common questions</p>
          </li>

          <li>
            <a href="https://cwiki.apache.org/confluence/display/TS/Apache+Traffic+Server">Wiki</a>
            and <a href="https://blogs.apache.org/trafficserver/">Our blog</a>
            <p>Collaboration and interesting topics around the project</p>
          </li>

        </ul>
      </div>
    </div>
  </div>

  <div class="row content">
    <div class="twelvecol banner">
      <h1 id="News">News</h1>
    </div>
  </div>

  <div class="row content">
    <div class="twelvecol">
      <div id="blurbbox">
        <ul>
          <li><b>April 3, 2024:</b>We are releasing both v9.2.4 and v8.1.10. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>October 9, 2023:</b>We are releasing both v9.2.3 and v8.1.9. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>August 3, 2023:</b> We are releasing both v9.2.2 and v8.1.8 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
	        <li><b>June 12, 2023:</b> We are releasing both v9.2.1 and v8.1.7 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>January 23, 2023:</b>The first version of the stable v9.2.x ATS branch is now available for download. This version, \
v9.2.0, is a feature and bug fix release over previous v9.1.x releases.</li>
          <li><b>December 15, 2022:</b> We are releasing both v9.1.4 and v8.1.6 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>August 9, 2022:</b> We are releasing both v9.1.3 and v8.1.5 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>March 21, 2022:</b>The latest version of the stable v8.x ATS release is now available for download. This version, v8.1.4, is a bug fix release over previous 8.x releases.</li>
          <li><b>March 11, 2021:</b>The latest version of the stable v9.x ATS
          release is now available for immediate download! This version,
          v9.1.2, is a bug fix release over previous 9.x releases.</li>
          <li><b>November 2, 2021:</b>We are releasing both v9.1.1 and v8.1.3 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>August 17, 2021:</b>We are releasing both v9.1.0, which is our next current release.</li>
          <li><b>June 24, 2021:</b>We are releasing both v9.0.2 and v8.1.2 which include security fixes. We recommend everyone to upgrade to one of these versions of ATS.</li>
          <li><b>April 16, 2021:</b>We are pleased to announce v9.0.1, which is bug-fix release on the v9.x LTS train.</li>
        </ul>
      </div>
    </div>
  </div>

  <div class="row content">
    <div class="twelvecol banner">
      <h1 id="Misc">Miscellaneous</h1>
    </div>
  </div>

  <div class="row content">
    <div class="sixcol">
      <div id="blurbbox">
        <ul>
          <li><a href="https://github.com/apache/trafficserver/">View Git code repository</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/TS/Supported+Operating+Systems">Supported Operating
              Systems</a></li>
        </ul>
      </div>
    </div>
    <div class="sixcol last">
      <div id="blurbbox">
        <ul>
          <li><a href="https://www.apache.org/licenses/">License</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/TS/Building">Build Instructions</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/TS/Committers">Committers</a></li>
          <li><a href="https://mail-archives.apache.org/mod_mbox/trafficserver-users/">Users Archives</a></li>
          <li><a href="https://mail-archives.apache.org/mod_mbox/trafficserver-dev/">Dev Archives</a></li>
        </ul>
      </div>
    </div>
  </div>

  <div id="footer" class="row">
    <div class="tencol">

      Copyright &copy; 2018
      <a href="https://www.apache.org/">The Apache Software Foundation</a>.
      Licensed under
      the <a href="https://www.apache.org/licenses/">Apache License</a>,
      Version 2.0. Apache Traffic Server, Apache,
      the Apache Traffic Server logo, and the Apache feather logo are
      trademarks of The Apache Software Foundation.
    </div>
    <div class="twocol right last">
      <span id="apache_logo">
        <a href="https://www.apache.org/"><img alt="The Apache Software Foundation" src="https://www.apache.org/images/feather-small.png" /></a>
      </span>
    </div>
  </div>

</body>

</html>
