gitweb/lib - Stat-based cache expiration
authorJakub Narebski <jnareb@gmail.com>
Sun, 5 Dec 2010 20:48:49 +0000 (21:48 +0100)
committerJakub Narebski <jnareb@gmail.com>
Sun, 5 Dec 2010 20:48:49 +0000 (21:48 +0100)
commit6e0c7b7ff9c35ee59d30a6785a240186d0f3ac39
tree5ace0c9ae763a4124199ce1e987de838b9f6e7d4
parentc3bc3a320def25d691c81ab1c20be4f1204f49aa
gitweb/lib - Stat-based cache expiration

Add stat-based cache expiration to file-based GitwebCache::SimpleFileCache.
Contrary to the way other caching interfaces such as Cache::Cache and CHI
do it, the time when cache element expires in is _global_ value associated
with cache instance, and is not local property of cache entry.  (Currently
cache entry does not store any metadata associated with entry... which
means that there is no need for serialization / marshalling / freezing and
thawing.)  Default expire time is -1, which means never expire.

To check if cache entry is expired, GitwebCache::SimpleFileCache compares
difference between mtime (last modify time) of a cache file and current time
with (global) time to expire.  It is done using CHI-compatible is_valid()
method.

Includes some tests checking that expiring works correctly (on the level of
API) in t9503.

Inspired-by-code-by: John 'Warthog9' Hawley <warthog9@kernel.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
gitweb/lib/GitwebCache/SimpleFileCache.pm
t/t9503/test_cache_interface.pl