NAME
   Plack::Middleware::Deflater - Compress response body with Gzip or
   Deflate

SYNOPSIS
     use Plack::Builder;

     builder {
       enable sub {
           my $app = shift;
           sub {
               my $env = shift;
               my $ua = $env->{HTTP_USER_AGENT} || '';
               # Netscape has some problem
               $env->{"psgix.compress-only-text/html"} = 1 if $ua =~ m!^Mozilla/4!;
               # Netscape 4.06-4.08 have some more problems
                $env->{"psgix.no-compress"} = 1 if $ua =~ m!^Mozilla/4\.0[678]!;
               # MSIE (7|8) masquerades as Netscape, but it is fine
               if ( $ua =~ m!\bMSIE (?:7|8)! ) {
                   $env->{"psgix.no-compress"} = 0;
                   $env->{"psgix.compress-only-text/html"} = 0;
               }
               $app->($env);
           }
       };
       enable "Deflater",
           content_type => ['text/css','text/html','text/javascript','application/javascript'],
           vary_user_agent => 1;
       sub { [200,['Content-Type','text/html'],["OK"]] }
     };

DESCRIPTION
   Plack::Middleware::Deflater is a middleware to encode your response body
   in gzip or deflate, based on "Accept-Encoding" HTTP request header. It
   would save the bandwidth a little bit but should increase the Plack
   server load, so ideally you should handle this on the frontend reverse
   proxy servers.

   This middleware removes "Content-Length" and streams encoded content,
   which means the server should support HTTP/1.1 chunked response or
   downgrade to HTTP/1.0 and closes the connection.

CONFIGURATIONS
   content_type
         content_type => 'text/html',
         content_type => [ 'text/html', 'text/css', 'text/javascript', 'application/javascript', 'application/x-javascript' ]

       Content-Type header to apply deflater. if content-type is not
       defined, Deflater will try to deflate all contents.

   vary_user_agent
         vary_user_agent => 1

       Add "User-Agent" to Vary header.

ENVIRONMENT VALUE
   psgix.no-compress
       Do not apply deflater

   psgix.compress-only-text/html
       Apply deflater only if content_type is "text/html"

LICENSE
   This software is licensed under the same terms as Perl itself.

AUTHOR
   Tatsuhiko Miyagawa

SEE ALSO
   Plack, <http://httpd.apache.org/docs/2.2/en/mod/mod_deflate.html>