NAME

Dancer::Route::Cache - route caching mechanism for Dancer

SYNOPSIS

DESCRIPTION

When Dancer first starts, it has to compile a regexp list of all the routes. Then, on each request it goes over the compiled routes list and tries to compare the requested path to a route.

A major drawback is that Dancer has to go over the matching on every request, which (especially on CGI-based applications) can be very time consuming.

The caching mechanism allows to cache some requests to specific routes (but NOT specific results) and run those routes on a specific path. This allows us to speed up Dancer quite a lot.

METHODS/SUBROUTINES

new(@args)

Creates a new route cache object.

my $cache = Dancer::Route::Cache->new(
    path_limit => 100,   # only 100 paths will be cached
    size_limit => '30M', # max size for cache is 30MB
);

Please check the ATTRIBUTES section below to learn about the arguments for new().

route_from_path($path)

Fetches the route from the path in the cache.

store_route( $path => $store )

Stores the route in the cache according to the path.

For developers: the reason we're using an object for this and not directly using the registry hash is because we need to enforce the limits.

parse_size($size)

Parses the size wanted to bytes. It can handle Kilobytes, Megabytes or Gigabytes.

NOTICE: handles bytes, not bits!

my $bytes = $cache->parse_size('30M');

# doesn't need an existing object
$bytes = Dancer::Route::Cache->parse_size('300G'); # works this way too

ATTRIBUTES

size_limit($limit)

Allows to set a size limit of the cache.

Returns the limit (post-set).

$cache->size_limit('10K');      # sets limit
my $limit = $cache->size_limit; # gets limit

path_limit($limit)

A path limit. That is, the amount of paths that whose routes will be cached.

Returns the limit (post-set).

$cache->path_limit('100');      # sets limit
my $limit = $cache->path_limit; # gets limit

AUTHOR

Sawyer X

LICENSE AND COPYRIGHT

Copyright 2010 Sawyer X.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.