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


Manual Reference Pages  -  PLACK::MIDDLEWARE::PRECOMPRESSED (3)

.ds Aq ’

NAME

Plack::Middleware::Precompressed - serve pre-gzipped content to compression-enabled clients

CONTENTS

VERSION

version 1.103

SYNOPSIS



 use Plack::Builder;

 builder {
     enable 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, by default it appends a .gz suffix to the PATH_INFO and tries to serve that. If that fails, it will then try again with the unmodified URI.

<B>NoteB>: 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 PATH_INFO to trigger the middleware.
rules A callback that is expected to transform the path instead of using the default behaviour of appending .gz to the file path. PATH_INFO will be aliased to the $_ variable, so you can do something like this:



 enable Precompressed, match => qr!\.js\z!, rules => sub { s!^/?!/z/! };



This example will prepend /z/ to file paths instead of appending .gz to them.

env_keys An array of PSGI environment key names. If you specify any, then the rules callback will receive a reference to a hash with just these keys, aliased to the values in the PSGI environment that will be passed to the wrapped app. You can modify these values to modify the environment it will see. This allows you do to something like this:



 enable Precompressed, env_keys => [ HTTP_HOST ],
        rules => sub { $_[0]{HTTP_HOST} = gzip.assets.example.com };



This somewhat peculiar interface is necessary so the middleware can abstract away the details of trying to copy as little data as possible during a request.

SUBCLASSING

If you reuse a particular configuration of Plack::Middleware::Precompressed in many projects, you can avoid repeating the same configuration in each of them by subclassing this middleware and overriding the rewrite and env_keys methods.

The rewrite method will be called just as the rules callback would be.

The env_keys method should return an array reference and will have the same effect on the rewrite method as the configuration option on the rules callback.

SEE ALSO

Plack::Middleware::Deflater

AUTHOR

Aristotle Pagaltzis <pagaltzis@gmx.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 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.

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


perl v5.20.3 PLACK::MIDDLEWARE::PRECOMPRESSED (3) 2015-01-10

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