NAME
Plack::Middleware::Precompressed - serve pre-gzipped content to compression-enabled clients
VERSION
version 1.004
SYNOPSIS
use Plack::Builder;
builder {
enable 'Plack::Middleware::Precompressed', match => qr!\.js\z!;
$handler;
};
DESCRIPTION
Plack::Middleware::Precompressed is an alternative (or rather, complement) to middlewares like Deflater, which will compress response bodies on the fly. For dynamic resources, that behaviour is necessary, but for static resources it is a waste: identical entities will be compressed over and over. Instead, Precompressed allows you to compress static resources once, e.g. as part of your build process, and then serve the compressed resource in place of the uncompressed one for compression-enabled clients.
To do so, it appends a .gz
suffix to the request URI and tries to serve that. If that fails, it will try again with the unmodified URI.
Note: this means requests for resources that are not pre-compressed will always be dispatched twice. You are are advised to use either the match
parameter or the Conditional middleware or something of the sort, to prevent requests from passing through this middleware unnecessarily.
CONFIGURATION OPTIONS
- match
-
Specifies a regex that must match the request URI to trigger the middleware.
SEE ALSO
AUTHOR
Aristotle Pagaltzis <pagaltzis@gmx.de>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Aristotle Pagaltzis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.