/Plack-Middleware-StaticShared

Plack middleware for serving resource that is concatnated some static files

Primary LanguagePerl

NAME
    Plack::Middleware::StaticShared - concat some static files to one
    resource

SYNOPSIS
      use Plack::Builder;
      use WebService::Google::Closure;

      builder {
          enable "StaticShared",
              cache => Cache::Memcached::Fast->new(servers => [qw/192.168.0.11:11211/]),
              base  => './static/',
              binds => [
                  {
                      prefix       => '/.shared.js',
                      content_type => 'text/javascript; charset=utf8',
                      filter       => sub {
                          WebService::Google::Closure->new(js_code => $_)->compile->code;
                      }
                  },
                  {
                      prefix       => '/.shared.css',
                      content_type => 'text/css; charset=utf8',
                  }
              ],
              verifier => sub {
                  my ($version, $prefix) = @_;
                  $version =~ /v\d/
              };

          $app;
      };

    And concatnated resources are provided as like following:

      /.shared.js:v1:/js/foolib.js,/js/barlib.js,/js/app.js
          => concat following: ./static/js/foolib.js, ./static/js/barlib.js, ./static/js/app.js

DESCRIPTION
    Plack::Middleware::StaticShared provides resource end point which concat
    some static files to one resource for reducing http requests.

CONFIGURATIONS
    cache (required)
        A cache object for caching concatnated resource content.

    base (required)
        Base directory which concatnating resource located in.

    binds (required)
        Definition of concatnated resources.

    verifier (optional)
        A subroutine for verifying version string to avoid attacking of
        cache flooding.

AUTHOR
    cho45

SEE ALSO
    Plack::Middleware Plack::Builder

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.