# NAME

Plack::Middleware::Static::OpenFileCache - Plack::Middleware::Static with open file cache

# SYNOPSIS

    use Plack::Middleware::Static::OpenFileCache;

    builder {
        enable "Plack::Middleware::Static",
            path => qr{^/(images|js|css)/},
            root => './htdocs/',
            max  => 100,
            expires => 60,
            cache_errors => 1;
        $app;
    };

# DESCRIPTION

Plack::Middleware::Static::OpenFileCache enables Plack::Middleware::Static 
to cache open file like nginx. This middleware cache opened file handles and their
sizes and modification times for faster contents serving. 

# CONFIGURATIONS

- max

    Maximum number of items in cache. If cache is overflowed, items are removed by LRU.
    (100 by default)

- expires

    Expires seconds. 60 by default

- cache\_errors

    If enabled, this middleware cache response if status is 40x. Disabled by default.

# BENCHMARK

benchmark with ApacheBench and [Monoceros](http://search.cpan.org/perldoc?Monoceros)

- benchmark on larger file

        Document Path:          /static/jquery-1.10.2.min.js
        Document Length:        93107 bytes
        

        Static                Requests per second:    1176.76 [#/sec] (mean)
        Static::OpenFileCache Requests per second:    1372.09 [#/sec] (mean)
- benchmark on small file

        Document Path:          /static/cpanfile
        Document Length:        160 bytes
        

        Static                 Requests per second:    2018.13 [#/sec] (mean)
        Static::OpenFileCache  Requests per second:    2639.02 [#/sec] (mean)

# LICENSE

Copyright (C) Masahiro Nagano.

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

# AUTHOR

Masahiro Nagano <kazeburo@gmail.com>