GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Plack::Middleware::Deflater(3) User Contributed Perl Documentation Plack::Middleware::Deflater(3)

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

  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"]] }
  };

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.

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.

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

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.

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

Tatsuhiko Miyagawa

Plack, <http://httpd.apache.org/docs/2.2/en/mod/mod_deflate.html>
2013-09-12 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.