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 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.225
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.