Web::Cache
Web::Cache is a Perl 6 web framework independant LRU caching module.
The goal of this module is to provide a variety of cache backend wrappers and utilities that simplify caching tasks within the context of a web application.
note: this is very much a work in progress. Ideas, issues, and pull-requests welcome.
Usage
# Bailador example
use v6;
use Bailador;
use Web::Cache;
Bailador::import; # for the template to work
# Create a new cache store
my &memory-cache = cache-create-store( size => 2048,
backend => 'memory' );
# TODO: Create multiple cache stores using different
# backends. This will enable caching certain
# content to different stores.
# Cached templates!
get / ^ '/template/' (.+) $ / => sub ($x) {
my $template = 'tmpl.tt';
my %params = %{ name => $x };
my $fancy_cache_key = [$template, $x].join('-');
# Any callback passed will be run on initial
# cache insert only. Once cache expiration is
# supported, this code will re-run again when
# the key expires.
memory-cache(key => $fancy_cache_key, {
template($template, %params)
});
}
#
# Remove a key
# memory-cache( key => $fancy_cache_key, :remove );
#
# Empty / clear cache
# memory-cache( :clear );
#
baile;
Config
Currently only memory caching is supported.
# Create cache store
my &memory-cache = create-cache-store( size => 2048,
backend => 'memory' );
Todo:
my &memory-cache = create-cache-store( size => 2048,
expires => 3600, # add expires parameter
backend => 'memory' );
my &disk-cache = create-cache-store( path => '/tmp/webcache/',
expires => 3600,
backend => 'disk' );
my &memcached = create-cache-store( servers => ["127.0.0.1:11211"],
expires => 3600,
backend => 'memcached' );
my &redis = create-cache-store( host => "127.0.0.1",
port => 6379,
expires => 3600,
backend => 'redis' );
Installation
zef
zef install Web::Cache
Manual
git clone https://github.com/scmorrison/perl6-Web-Cache.git
cd perl6-Web-Cache/
zef install .
Todo
- Support additional backends (disk, Memcached, Redis)
- Cache key generator
- Partial / fragment support
- Tests
Requirements
AUTHORS
Copyright and license
Copyright 2017 Sam Morrison
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.