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
undefund $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 Cachedatei
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.232
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.