Forum Vorschläge u. Tipps.
Einfaches Cache-System
Hallo,
wir bauen für einen Kunden eine kleine Präsenz. Der Kunde hat Strato als Provider. Leider bietet Strato nur Schnecken-Performance. Als schnelle Abhilfe haben wir einen einfachen Seitencache implementiert.
Sicher, dass sollte eigentlich ein Plugin werden. Aber bis wir das Plugin-System verstanden haben, das ganze erst einmal direkt.
Viele Grüße aus/nach Bonn,
Olav Schettler
all_inc_front.php:
============
function cache_file() {
global $template;
$dir = $_SERVER['DOCUMENT_ROOT']
. '/papoo/cache/';
if ($_SERVER['QUERY_STRING']) {
$cache_id = urlencode($_SERVER['QUERY_STRING']);
}
else {
$cache_id = 'menuid%3D1';
}
return $dir . $template . ':' . $cache_id . '.html';
}
function cache_get() {
$file = cache_file();
if (is_readable($file)) {
readfile($file);
return TRUE;
}
return FALSE;
}
function cache_put($content) {
$file = cache_file();
$fh = fopen($file, "w");
fwrite($fh, $content);
fclose($fh);
}
if (cache_get()) {
exit();
}
[...]
print $output;
cache_put($output);
interna/templates/menu.inc.html:
=====================
<script language="JavaScript" type="text/javascript">
<!--
document.writeln('</li><a href="rmcache.php?caller=' + escape(document.URL) + '">Cache leeren</li>');
//-->
</script>
interna/rmcache.php:
==============
<?php
function cache_remove() {
$dir = $_SERVER['DOCUMENT_ROOT']
. '/papoo/cache/'; $dh = opendir($dir);
while (($file = readdir($dh)) !== false) {
if ($file{0} == '.') {
continue;
}
unlink($dir . $file);
}
closedir($dh);
}
cache_remove(); header('Location: '
. $_REQUEST['caller']);
?>
Re: Einfaches Cache-System
Hallo Olav,
werd ich mal testen wie es so funktioniert
, hört sich ja gut an.
Viele Grüße,
Carsten
Re: Einfaches Cache-System
Hallo Olav,
ich hatte mir zu diesem Thema auch schon mal Gedanken gemacht. Ist aber echt ziemlich kompliziert. Warum? Hier ein kleines Beispiel:
Woher weiss dein Cache-System welche Sprache gerade ausgewählt ist?
Die Sprache wird quasi einmal gesetzt und anschliesend ist ein Link auf eine deutsche Seite von einem auf eine englische nicht mehr zu unterscheiden. Papoo regelt das intern durch setzen einer Session-Variablen. Diese Information müsste in das Cache-System ja irgendwie mit einfliesen.
Weiteres Problem:
Benutzer-Rechte. Woher weiss dein Cache-System welche Rechte ein Benutzer gerade hat, oder um es anders auszudrücken: Wenn ein bestimmter Menü-Punkt nicht von "Jeder" gesehen werden kann, dürfen Benutzer der Gruppe "Jeder" diesen Menü-Punkt auch nicht sehen. Setzt aber ein Benutzer, der das Recht hat diesen Menü-Punkt zu sehen, den Cache, würden ja nun auch Benutzer der Gruppe "Jeder" diesen Menü-Punkt sehen.
Wie du siehst, ist das nicht ganz so einfach wie von dir gedacht. Prinzipiell wäre eine Cache-Funktion aber schon eine feine Sache 
Stephan
Re: Einfaches Cache-System
Kleine Ergänzung:
Am Anfang von cache_get() und cache_put() jeweils
---
if ($_SERVER['REQUEST_METHOD'] != 'GET') {
return FALSE;
}
---
einfügen. Dann kommt die Mechanik auch mit dem Kontaktformular klar.
Olav
Re: Einfaches Cache-System
Hallo Stephan,
schon klar. Unsere einfache Site gibt's aber augenblicklich nur in deutsch und die eine Redakteurin hat alle Rechte. Also die einfachste aller Welten.
Die Alternative -also ohne diese Cache-Funktionen- wäre aber Gemecker wegen Schneckentempo bei Strato und Schlaupilzkommentare wie "Ist ja klar, dass ein CMS sowieso zu langsam ist".
Olav
Re: Einfaches Cache-System
Hi Olav,
alles klar. Wollte das auch nur mal so in den Raum stellen. Evtl. springt ja auch mal "irgend ein kluges Köpfchen" auf dieses Thema an und zaubert eine perfekte einfache Lösung aus dem Hut. Ich selbst hab das auch mal ansatzweise in Papoo integriert. Als dann aber so langsam absehbar wurde, dass das Ganze doch nicht so einfach wird und es doch einige grundsätzliche Änderungen in Papoo bedarf, legte ich das alles mal auf Eis. Interessant ist das Thema aber allemal, zumal Papoo im Moment wirklich nicht das schnellste System ist 
Stephan
Sie müssen sich anmelden, um einen Beitrag schreiben zu können.