Provided by: libplack-middleware-deflater-perl_0.12-2_all bug

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"

       plack.skip-deflater
           Skip all Deflater features

   Compare psgix.no-compress with plack.skip-deflater
       If no-compress is true, PM::Deflater skips gzip or deflate. But adds Vary: Accept-Encoding
       and Vary: User-Agent header. skip-deflater forces to skip all PM::Deflater feature,
       doesn't allow to add Vary header.

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>