Hallo Forum,
meine mehrsprachige Seite ließt die lokalisierten Texte aus einer Datenbank. Nun muss ich das ganze noch performance-optimieren. Da sich die Texte i.d.R. nicht ändern (und wenn doch, bekomme ich das mit), möchte ich gerne einen Cache implementieren.
Mein Ansatz (muss PHP 4 verwenden):
class TranslationCache {
var $cache = array();
function &getInstance() {
static $instance;
if (!isset($instance)) {
$instance = new TranslationCache();
}
return $instance;
}
function add($inDomain, $inForeignId, $inField, $inLanguage, $inText) {
$this->cache[$inDomain][$inForeignId][$inField][$inLanguage] = $inText;
}
function get($inDomain, $inForeignId, $inField, $inLanguage) {
return $this->cache[$inDomain][$inForeignId][$inField][$inLanguage];
}
function reset($inDomain, $inForeignId, $inField, $inLanguage) {
unset($this->cache[$inDomain][$inForeignId][$inField][$inLanguage]);
}
}
Wenn ich das so teste, klappt es auch:
$cache =& TranslationCache::getInstance();
echo($cache->add("Menu", 7, "bla", "de", "deutsch"));
echo($cache->add("Menu", 7, "bla", "en", "englisch"));
echo($cache->get("Menu", 7, "bla", "de));
Allerdings soll der Cache ja auch noch da sein, wenn ich auf eine andere Seite gehen. Auf einer völlig anderen Seite muss ich also auch
echo($cache->get("Menu", 7, "bla", "de));
aufrufen können und einen Wert bekommen.
Jetzt die Frage:
Wie schaffe ich es, dass das Cache-Singleton seitenübergreifend existiert?
In die Session legen, wäre nur die halbe Miete, denn es sollen ja alle Besucher den selben Cache nutzen.
Wer hat einen Tipp?
Danke und Gruß
MM