concache zum Cachen der Frontendausgabe
thanks steese. dann scheint das ja eine geniale lösung zu sein. jetzt fehlt eigentlich nur noch eine anpassung der artikeleigenschaften, damit man im artikel einstellen kann, ob eine seite gecached werden soll oder nicht.
dann probiere ich das ganze auch mal aus. vielen dank!
dann probiere ich das ganze auch mal aus. vielen dank!
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Morgen,silicone hat geschrieben:Hallo,
beim Versuch, dein Script in eine Contenido 4.6.8.5 auf Strato einzubinden hagelt es leider folgende Fehlermeldungen:
Kannst du damit etwas anfangen?
...
EDIT: Ist nicht die Version 4.6.8.5, sondern die 4.6.8.15 aus dem CVS...
falls das Problem nach dem Einbau des Caching aufgetaucht ist, dann liegt es am folgender Zuweisung in der concache.php:
Code: Alles auswählen
$cfgConCache['idoptions'] = array(
'uri' => &$REQUEST_URI,
'post' => &$_POST,
'get' => &$_GET
);
Code: Alles auswählen
$cfgConCache['idoptions'] = array(
'uri' => $_SERVER['REQUEST_URI'],
'post' => $_POST,
'get' => $_GET
);
Danker für den Tip, $_SERVER['REQUEST_URI'] ist besser als $REQUEST_URI.
Nachtrag:
Auch in der front_content.php Zeile
Code: Alles auswählen
$oCacheHandler = new cConCacheHandler($GLOBALS['cfgConCache'], &$db);
Code: Alles auswählen
$oCacheHandler = new cConCacheHandler($GLOBALS['cfgConCache'], $db);
Gruß
xmurrix
Zuletzt geändert von xmurrix am Mi 5. Jul 2006, 09:51, insgesamt 1-mal geändert.
Ich denke, dass es am sinnvollsten wäre, wenn in den Kategorien möglich wäre zu sagen, wie lange darin enthaltene Artikel gecacht werden sollen, da in der Regel in einer Kategorie immer gleiche Arten von Artikeln liegen.kummer hat geschrieben:thanks steese. dann scheint das ja eine geniale lösung zu sein. jetzt fehlt eigentlich nur noch eine anpassung der artikeleigenschaften, damit man im artikel einstellen kann, ob eine seite gecached werden soll oder nicht.
Aber auf diesen Wunsch nach beliebigen Kategorieeigenschaften werde ich wohl noch lange warten müssen.


Gruss,
Michael
"Keep on riding this Bike!" (Jackson Mulham)
Michael
"Keep on riding this Bike!" (Jackson Mulham)
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
@kummer:
Das Caching erkennt selber nicht, ob die Ausgabe sich ändern würde. Ein Anhaltspunkt ist dafür das "createcode" Flag aus "con_art".
Auch durch die Kombination der Variable $cfgConCache['idoptions'] in concache.php wird die Scriptdynamik durch den Cache aufrechterehalten.
In der Cache-Klasse von PEAR (pear/Cache/Cache.php) gibt es die Eigenschaft var $gc_maxlifetime = 86400; für die maximale Verweildauer von gecachten Inhalten. Spätestens nach 24 Stunden werden gecachte Inhalte wieder gelöscht.
Um das Caching für einzelne Seiten auszuschließen, kann man einen Parameter mit übergeben. Allerdings würde ich nicht "force" verwenden, da dieser Parameter zwar dafür sorgt, dass das Caching nicht greift aber dafür wird jedesmal conGenerateCode aufgerufen.
Eine quick & dirty Lösung dafür ist z. B. eine Anpassung der in der concache.php
Ideal wäre es natürlich, das Caching direkt in Contenido zu Implementieren, um über Artikel- oder Kategorieigenschaften das Verhalten zu regeln.
Allerdings gibt es aber immer noch das Problem mit Modulen, die zufällige Ausgaben erzeugen oder mit Countern (wie chCounter).
Gruß
xmurrix
Das Caching erkennt selber nicht, ob die Ausgabe sich ändern würde. Ein Anhaltspunkt ist dafür das "createcode" Flag aus "con_art".
Auch durch die Kombination der Variable $cfgConCache['idoptions'] in concache.php wird die Scriptdynamik durch den Cache aufrechterehalten.
In der Cache-Klasse von PEAR (pear/Cache/Cache.php) gibt es die Eigenschaft var $gc_maxlifetime = 86400; für die maximale Verweildauer von gecachten Inhalten. Spätestens nach 24 Stunden werden gecachte Inhalte wieder gelöscht.
Um das Caching für einzelne Seiten auszuschließen, kann man einen Parameter mit übergeben. Allerdings würde ich nicht "force" verwenden, da dieser Parameter zwar dafür sorgt, dass das Caching nicht greift aber dafür wird jedesmal conGenerateCode aufgerufen.
Eine quick & dirty Lösung dafür ist z. B. eine Anpassung der in der concache.php
Code: Alles auswählen
/**
* activate caching of frontend output
* @var bool $cfgConCache['enable']
*/
$cfgConCache['enable'] = true;
if (isset($_REQUEST['nocache']) && $_REQUEST['nocache'] == 1) {
$cfgConCache['enable'] = false;
}
Allerdings gibt es aber immer noch das Problem mit Modulen, die zufällige Ausgaben erzeugen oder mit Countern (wie chCounter).
Gruß
xmurrix
Bekomme folgende Fehlermeldung:
Ich habe in /wutz/cms/includes/ "class.concache.php" und "concache.php" gespeichert. In /wutz/pear/ habe ich den Ordner "Container" angelegt mit der Datei "file.php" darin und in /wutz/pear/ habe ich dan noch die vier dateien gespeichert. In der Front_Content habe ich die Änderungen zwei Codeteil ebenfalls eingefügt.
Code: Alles auswählen
Fatal error: Error: Can't include Cache/Output.php in /www/htdocs/wutz/contenido/includes/api/functions.api.general.php on line 157
-
- Beiträge: 1758
- Registriert: Mo 1. Aug 2005, 00:35
- Wohnort: in der schönen Hallertau, mitten im Hopfen
- Kontaktdaten:
und da liegt der hund begraben hatte ich auch, case sensitivWutz hat geschrieben:in /wutz/pear/ habe ich dan noch die vier dateien gespeichert. In der Front_Content habe ich die Änderungen zwei Codeteil ebenfalls eingefügt.
nimm die vier wieder raus aus dem ordner pear/CACHE
lege einen neuen ordner pear/Cache oder kopiere den aus dem zip rüber so dass du am ende zwei chache ordner in pear hast Cache und den org CACHE
Grüsse, Guido
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
kann es sein, dass er mir mit eingeschaltetem caching die statistiken nicht mehr durchgehend aktualisiert? kann mir das jemand bestätigen?
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Stimmt,stese hat geschrieben:kann es sein, dass er mir mit eingeschaltetem caching die statistiken nicht mehr durchgehend aktualisiert? kann mir das jemand bestätigen?
auch die Statistiken werden nicht aktualisiert, da das Cache-Objekt die Ausführung der front_content.php mit der Ausgabe der gecachten Seite beendet.
Eine Möglichkeit wäre die Statisktik-Funktionalität in das Cache-Objekt einzubauen.
Gruß
xmurrix
eine andere lösung wäre vll. auch, die statistiken manuell anzustoßen, sobald cache aktiviert ist. das würde allerdings erfordern, dass man die statistik in dem falle auch wirksam unterbinden muss, nicht dass aufrufe doppelt gezählt werden, wenn der cache abgelaufen ist und neu generiert wird.
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Wenn das Caching aktiv ist und das Cache-Objekt eine passende gecachte Ausgabe gefunden hat, wird der HTML-Code vom Cache mit die() ausgegeben. Danach geht nichts mehr...stese hat geschrieben:eine andere lösung wäre vll. auch, die statistiken manuell anzustoßen, sobald cache aktiviert ist. das würde allerdings erfordern, dass man die statistik in dem falle auch wirksam unterbinden muss, nicht dass aufrufe doppelt gezählt werden, wenn der cache abgelaufen ist und neu generiert wird.
Optional könnte die Funktion start() den gefundenen HTML-Code zurückliefern, dann kann man die Statistik auch aktualisieren. Hierbei ist dann das die() nachträglich anzugeben. z.B.:
Code: Alles auswählen
cInclude('frontend', 'includes/concache.php');
$oCacheHandler = new cConCacheHandler($GLOBALS['cfgConCache'], $db);
$cachedCode = $oCacheHandler->start();
if ($cachedCode != false) {
// ok, code gefunden, aktualisierung der statistik
...
die($cachedCode);
}
Gruß
xmurrix
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Hallo zusammen,
nach dem Hinweis von stese, die Statistik wurde bei der Ausgabe von gecachten Seiten nicht aktualisiert, habe ich dies in das Caching mit reingenommen. Wird eine Cache-Version der Ausgabe ausgeliefert, kümmert sich das Cache-Objekt um die Aktualisierung der Statistik, ansonsten macht es der entsprechende Anweisungsblock in der front_content.php.
Zugleich wurde noch dem Caching ein Event-Handling verpasst, in dem man festlegen kann, welche Event-Handler ausgeführt werden sollen. Es stehen 2 Events zur Verfügung:
- 'beforeoutput': Code zum Ausführen, bevor die Ausgabe stattfindet
- 'afteroutput': Code zum Ausführen, nachdem die Ausgabe erfolgt ist
Die Aktualisierung der Statistik und Aufruf der page_close()-Funktion wird z.B. im 'afteroutput'-Event abgearbeitet...
Download der neuen Version: concache0.9
Grüße
xmurrix
nach dem Hinweis von stese, die Statistik wurde bei der Ausgabe von gecachten Seiten nicht aktualisiert, habe ich dies in das Caching mit reingenommen. Wird eine Cache-Version der Ausgabe ausgeliefert, kümmert sich das Cache-Objekt um die Aktualisierung der Statistik, ansonsten macht es der entsprechende Anweisungsblock in der front_content.php.
Zugleich wurde noch dem Caching ein Event-Handling verpasst, in dem man festlegen kann, welche Event-Handler ausgeführt werden sollen. Es stehen 2 Events zur Verfügung:
- 'beforeoutput': Code zum Ausführen, bevor die Ausgabe stattfindet
- 'afteroutput': Code zum Ausführen, nachdem die Ausgabe erfolgt ist
Die Aktualisierung der Statistik und Aufruf der page_close()-Funktion wird z.B. im 'afteroutput'-Event abgearbeitet...
Download der neuen Version: concache0.9
Grüße
xmurrix
danke scheint zu funzen.
ich habe die klasse cConCacheHandler noch etwas erweitert, dass bestimmte idarts nicht gecached werden. gleich an den anfang des cConCachHandler constructors folgende zeilen einfügen:
danach kann man in den mandanteneinstellungen folgende settings vornehmen:
Typ: cache
Name: excludeidarts
Wert: Idart, mehrere durch komma getrennt
diese idarts werden nicht durch den cache gejagt (für formulare oder ähnliches)
ich habe die klasse cConCacheHandler noch etwas erweitert, dass bestimmte idarts nicht gecached werden. gleich an den anfang des cConCachHandler constructors folgende zeilen einfügen:
Code: Alles auswählen
// check if current article shouldn't be cached
$sExcludeIdarts = getEffectiveSetting('cache','excludeidarts', false);
if ($sExcludeIdarts && strlen($sExcludeIdarts)>0) {
$sExcludeIdarts = preg_replace("/[^0-9,]/","",$sExcludeIdarts);
$aExcludeIdart = explode(",",$sExcludeIdarts);
if (in_array($GLOBALS['idart'], $aExcludeIdart)) {
$this->_bEnableCaching = false;
return;
}
}
Typ: cache
Name: excludeidarts
Wert: Idart, mehrere durch komma getrennt
diese idarts werden nicht durch den cache gejagt (für formulare oder ähnliches)
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
-
- Beiträge: 3215
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 17 Mal
- Kontaktdaten:
Super, die Ausnahmebehandlung für bestimmte Artikel ist den Contructor eingabaut und ist online - Danke dir für das Beisteuern der Funktionalität.ich habe die klasse cConCacheHandler noch etwas erweitert, dass bestimmte idarts nicht gecached werden. gleich an den anfang des cConCachHandler constructors folgende zeilen einfügen:
Langsam reift das Ding

Gruß
xmurrix
datei concache.php anschauen
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel