NAME
Quiq::Cache - Cache Datenstruktur in Datei
BASE CLASS
SYNOPSIS
use Quiq::Cache;
sub ... {
...
# Instantiiere Cache
my $c = Quiq::Cache->new($cacheDir,$duration,\@key)
-inactive => $condition,
);
if (my $ref = $c->read) {
return $ref; # liefere Datenstruktur aus Cache
}
# Baue Datenstruktur auf
...
$c->write($ref); # schreibe Datenstuktur auf Cache
return $ref; # liefere Datenstruktur
}
DESCRIPTION
Ein Objekt der Klasse verwaltet einen Cache. Der Cache ist ein Verzeichnis ($cacheDir
) im Dateisystem. Eine Cachedatei speichert eine beliebige Datenstruktur. Diese wird von Storable
geschrieben und gelesen. Die Datenstruktur darf ein Objekt (also geblesst) oder zirkulär sein. Die Cachdatei ist $duration Sekunden gültig. Danach ist sie ungültig und wird neu berechnet.
Die Aufrufe read() und write() haben keine Wirkung, wenn $condition
wahr ist. Damit kann das Caching für bestimmte Fälle abgschaltet werden.
Das Array @key besteht aus ein oder mehr einzelnen Werten, die zusammen den Schlüssel für die Cachdatei bilden. Der interne Schüssel ist der MD5-Hash über diesen Werten. Dieser bildet den Namen der Cachedatei.
EXAMPLE
Cachen einer HTML-Seite, die von einem einzigen Parameter $day abhängt:
my $day = $self->param('day') // $today;
my $c = Quiq::Cache->new('~/var/html-cache',43_200,[$day],
-inactive => $day eq $today,
);
if (my $ref = $c->read) {
$self->render(text=>$$ref);
return;
}
my $html = ...HTML erzeugen...
$c->write(\$html);
METHODS
Klassenmethoden
new() - Konstruktor
Synopsis
$c = $class->new($dir,$duration,\@key,@opt);
Arguments
- $dir
-
Verzeichnis, in dem die Cachdatei gespeichert wird.
- $duration
-
Zeitdauer in Sekunden, die die Cachdatei ab ihrer Erzeugung gültig ist.
- @key
-
Die zur Bildung des Hash herangezogenen Werte.
Options
- -inactive => $bool (default: 0)
-
Wenn wahr, ist der Cache inaktiv, d.h. $c->read() liefert immer
undef
und $c->write() hat keine Wirkung. - -prefix => $str (Default: '')
-
Prefix, der der Cachedatei vorangestellt wird.
Returns
Cache-Objekt
Description
Instantiiere ein Cache-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
read() - Lies Daten aus Cachdatei
Synopsis
$ref = $c->read;
Returns
Referenz auf Datenstruktur oder undef
Description
Liefere eine Referenz auf die Datenstruktur in der Cachdatei oder undef
. Wir liefern undef
, wenn
der Cache inaktiv ist
die Cachdatei nicht existiert
die Cachdatei exisiert, aber älter ist als die Gültigkeitsdauer
write() - Schreibe Daten auf Cachdatei
Synopsis
$c->write($ref);
Arguments
Description
Schreibe Datenstruktur $ref auf die Cachedatei.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.