Rand Stats

Web::Cache

github:scmorrison

Web::Cache Build Status

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

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.