1Plack::Middleware::DeflUasteerr(C3o)ntributed Perl DocumPelnatcakt:i:oMniddleware::Deflater(3)
2
3
4
6 Plack::Middleware::Deflater - Compress response body with Gzip or
7 Deflate
8
10 use Plack::Builder;
11
12 builder {
13 enable sub {
14 my $app = shift;
15 sub {
16 my $env = shift;
17 my $ua = $env->{HTTP_USER_AGENT} || '';
18 # Netscape has some problem
19 $env->{"psgix.compress-only-text/html"} = 1 if $ua =~ m!^Mozilla/4!;
20 # Netscape 4.06-4.08 have some more problems
21 $env->{"psgix.no-compress"} = 1 if $ua =~ m!^Mozilla/4\.0[678]!;
22 # MSIE (7|8) masquerades as Netscape, but it is fine
23 if ( $ua =~ m!\bMSIE (?:7|8)! ) {
24 $env->{"psgix.no-compress"} = 0;
25 $env->{"psgix.compress-only-text/html"} = 0;
26 }
27 $app->($env);
28 }
29 };
30 enable "Deflater",
31 content_type => ['text/css','text/html','text/javascript','application/javascript'],
32 vary_user_agent => 1;
33 sub { [200,['Content-Type','text/html'],["OK"]] }
34 };
35
37 Plack::Middleware::Deflater is a middleware to encode your response
38 body in gzip or deflate, based on "Accept-Encoding" HTTP request
39 header. It would save the bandwidth a little bit but should increase
40 the Plack server load, so ideally you should handle this on the
41 frontend reverse proxy servers.
42
43 This middleware removes "Content-Length" and streams encoded content,
44 which means the server should support HTTP/1.1 chunked response or
45 downgrade to HTTP/1.0 and closes the connection.
46
48 content_type
49 content_type => 'text/html',
50 content_type => [ 'text/html', 'text/css', 'text/javascript', 'application/javascript', 'application/x-javascript' ]
51
52 Content-Type header to apply deflater. if content-type is not
53 defined, Deflater will try to deflate all contents.
54
55 vary_user_agent
56 vary_user_agent => 1
57
58 Add "User-Agent" to Vary header.
59
61 psgix.no-compress
62 Do not apply deflater
63
64 psgix.compress-only-text/html
65 Apply deflater only if content_type is "text/html"
66
67 plack.skip-deflater
68 Skip all Deflater features
69
70 Compare psgix.no-compress with plack.skip-deflater
71 If no-compress is true, PM::Deflater skips gzip or deflate. But adds
72 Vary: Accept-Encoding and Vary: User-Agent header. skip-deflater forces
73 to skip all PM::Deflater feature, doesn't allow to add Vary header.
74
76 This software is licensed under the same terms as Perl itself.
77
79 Tatsuhiko Miyagawa
80
82 Plack, <http://httpd.apache.org/docs/2.2/en/mod/mod_deflate.html>
83
84
85
86perl v5.38.0 2023-07-21 Plack::Middleware::Deflater(3)