forked from plack/Plack-Middleware-Deflater
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
79 lines (63 loc) · 2.68 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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>