sourCEntral - mobile manpages

pdf

Plack::Middleware::Deflater

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>

pdf