<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Gzip Handler</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="advanced-extras.html" title="Chapter&nbsp;17.&nbsp;Provided Servlets, Filters, and Handlers"><link rel="prev" href="dos-filter.html" title="Denial of Service Filter"><link rel="next" href="cross-origin-filter.html" title="Cross Origin Filter"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
            Version: 9.3.0.v20150612</span></td><td style="width: 50%"><script type="text/javascript">  (function() {
            var cx = '016459005284625897022:obd4lsai2ds';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
            })();
          </script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Gzip Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dos-filter.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;17.&nbsp;Provided Servlets, Filters, and Handlers<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="cross-origin-filter.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
          <span class="website">www.webtide.com</span></a></h5><p>
 private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
 scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="gzip-filter"></a>Gzip Handler</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="gzip-filter.html#gzip-filter-metadata">Info</a></span></dt><dt><span class="section"><a href="gzip-filter.html#gzip-filter-usage">Usage</a></span></dt><dt><span class="section"><a href="gzip-filter.html#gzip-filter-rules">Gzip Rules</a></span></dt><dt><span class="section"><a href="gzip-filter.html#gzip-filter-init">Gzip Configuration</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="gzip-filter-metadata"></a>Info</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Classname:
        <code class="code">org.eclipse.jetty.server.handler.gzip.GzipHandler</code></p></li><li class="listitem"><p>Maven Artifact: org.eclipse.jetty:jetty-servlets</p></li><li class="listitem"><p>Javadoc: <a class="link" href="http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/server/handler/gzip/GzipHandler.html" target="_top">
        http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/server/handler/gzip/GzipHandler.html
        </a></p></li><li class="listitem"><p>Xref: <a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/server/handler/gzip/GzipHandler.html" target="_top">
        http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/server/handler/gzip/GzipHandler.html
        </a></p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="gzip-filter-usage"></a>Usage</h3></div></div></div><p>The Jetty GzipHandler is a compression handler that you can apply to
    any dynamic resource (servlet). It fixes many of the bugs in commonly
    available compression filters: it works with asynchronous servlets; it
    handles all ways to set content length. We have tested it with Jetty
    continuations and suspending requests. Some user-agents might be excluded
    from compression to avoid common browser bugs (yes, this means
    IE!).</p><p>The GzipHandler is added to the entire server by the
    etc/jetty-gzip.xml file from the gzip.mod module. It may also be added to
    individual contexts in a context xml file.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="gzip-filter-rules"></a>Gzip Rules</h3></div></div></div><p>GZIP Handler will gzip or deflate the content of a response
    if:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>It is mapped to a matching path</p></li><li class="listitem"><p>The request method is configured to support gzip</p></li><li class="listitem"><p>The request is not from an excluded User-Agent</p></li><li class="listitem"><p>accept-encoding header is set to either gzip, deflate or a
        combination of those</p></li><li class="listitem"><p>The response status code is &gt;=200 and &lt;300</p></li><li class="listitem"><p>The content length is unknown or more than the minGzipSize
        initParameter or the minGzipSize is 0(default)</p></li><li class="listitem"><p>The content-type does not match an excluded mime-type</p></li><li class="listitem"><p>No content-encoding is specified by the resource</p></li></ul></div><p>If both gzip and deflate are specified in the accept-encoding
    header, then gzip will be used.</p><p>Compressing the content can greatly improve the network bandwidth
    usage, but at a cost of memory and CPU cycles. The <a class="link" href="advanced-extras.html#default-servlet" title="Default Servlet">DefaultServlet</a> is capable of serving
    pre-compressed static content, which saves memory and CPU. By default, the
    GzipHandler will check to see if pre-compressed content exists, and pass
    the request through to be handled by the DefaultServlet.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="gzip-filter-init"></a>Gzip Configuration</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">minGzipSize</span></dt><dd><p>Content will only be compressed if content length is either
          unknown or greater than minGzipSize.</p></dd><dt><span class="term">checkGzExists</span></dt><dd><p>True by default. If set to false, the handler will not check
          for pre-compressed content.</p></dd><dt><span class="term">compressionLevel</span></dt><dd><p>The compression level used for deflate compression.
          (0-9).</p></dd><dt><span class="term">includedMethods</span></dt><dd><p>List of HTTP methods to compress. If not set, only GET
          requests are compressed.</p></dd><dt><span class="term">includedMimeTypes</span></dt><dd><p>List of mime types to compress.</p></dd><dt><span class="term">excludedMimeTypes</span></dt><dd><p>List of mime types not to compress.</p></dd><dt><span class="term">excludedAgentPatterns</span></dt><dd><p>A list of regex patterns for User-Agent names from which
          requests should not be compressed.</p></dd><dt><span class="term">excludedPaths</span></dt><dd><p>List of paths to exclude from compression. Does a
          String.startsWith(String) comparison to check if the path matches.If
          it does match -&gt; no compression. To match subpaths use
          excludePathPatterns instead.</p></dd><dt><span class="term">includedPaths</span></dt><dd><p>List of paths to consider for compression.</p></dd><dt><span class="term">includePaths</span></dt><dd><p>List of paths to definitely consider for compression.</p></dd></dl></div></div></div><script type="text/javascript">
      SyntaxHighlighter.all()
    </script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dos-filter.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="advanced-extras.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="cross-origin-filter.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Denial of Service Filter&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Cross Origin Filter</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
            See an error or something missing?
            <span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
                <span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2015-06-15T13:18:22-05:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1149868-7']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
    </script></body></html>