The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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,
            buf_size => 8192,
            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

buf_size

If content size of static file is smaller than buf_size. Plack::Middleware::Static::OpenFileCache reads all to memory. 8192 byte by default.

cache_errors

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

BENCHMARK

benchmark with ApacheBench and Monoceros

benchmark on larger file
  Document Path:          /static/jquery-1.10.2.min.js
  Document Length:        93107 bytes
  
  Static                Requests per second:    1219.47 [#/sec] (mean)
  Static::OpenFileCache Requests per second:    1483.52 [#/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:    2813.08 [#/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>