NAME
Cache::Static - Caching without freshness concerns
SYNOPSIS
HTML::Mason instructions only for now... In handler.pl: use Cache::Static;
In any component you where you have a well defined set of dependencies which change the output: <%init> my $_cs_deps = [ #file dependencies - only regenerate if a file has changed 'file|/path/to/some_configuration_file',
#DBI dependencies - still under development - WONT WORK
#DBI dependencies: note the third argument is a DSN
'_DBI|table|mysql:scache_test_db|test_table',
'_DBI|db|mysql:scache_test_db',
#not yet implemented:
#column level depends, e.g. "DBI|column|$dsn|$tablename|$columname"
#row depends, e.g. "DBI|row|$dsn|$tablename|$uid_column_name|$uid_value"
#XML::Comma dependencies - only regenerate if a Doc or Store has changed
"_XML::Comma|Doc|$doc_key",
"_XML::Comma|Store|$def|$store",
#time dependencies (WARNING: these are discouraged, see doc/NOTE-time-deps)
'time|15s', #every 15 seconds
'time|M:15s', #every 15 seconds after the minute
'time|H:2m', #every 2 minutes past the hour
'time|W:2d3h5m0s', #every Tuesday at 3:05 AM
#modifiers (indicate behavior when the file cannot be found)
'file-0|/tmp/foo', #if ! -e /tmp/foo, regenerate
'file-1|/tmp/foo', #if ! -e /tmp/foo, serve
'file|/tmp/foo', #use the config value "dep_file_not_found_returns"
#note modifiers also work on extensions, e.g.
'_DBI-1|db|mysql:scache_test_db',
'_XML::Comma-0|Store|mm_item|post',
#etc... but modifiers CANNOT be used with times (since they have no
#file backing on disk)
];
#whatever you have in $_cs_deps above...
return if Cache::Static::HTML_Mason_Util::cache_it(
$r, $m, 1, $_cs_deps);
#...
#rest of init block
#...
</%init>
TODO: an overview (and decent API) for usage outside of HTML::Mason land.
DESCRIPTION
The guts of Cache::Static, in all its glory.
AUTHOR
scache@mediamatters.org
SEE ALSO
https://chronicle.allafrica.com:8080/scache/