[B]Achtung, das ist nichts für schwache nerven - wer nicht weiß was er hier tut der lässt es lieber![/B]
Hier ein kleiner proof-of-concept wie man das query caching mit einem kleinen Hack in Oxid aktivieren kann (getestet und funktioniert unter CE 4.5.5 und 4.4.8):
[ul]
[li]ADODB herunterladen => http://sourceforge.net/projects/adodb/files/latest/download?source=files
[/li][li]Archiv entpacken und hochladen in den core Ordner, danach solltet ihr einen Ordner core/adodb5 haben
[/li][/ul]
So nun geht der eigentliche Hack los, das ginge sicherlich auch irgendwie mit einem Modul, aber dazu bin ich gerade nicht motiviert:
core/oxdb.php öffnen, oben ändern:
// Including main ADODB include
require_once getShopBasePath() . 'core/adodb5/adodb.inc.php';
speichern, hochladen.
So nun noch dafür sorgen dass auch etwas gecached wird, fangen wir mit allen oxlist Objekten an:
core/oxlist.php öffnen und suchen:
if ( $this->_aSqlLimit[0] || $this->_aSqlLimit[1]) {
$rs = oxDb::getDb(true)->SelectLimit( $sSql, $this->_aSqlLimit[1], $this->_aSqlLimit[0]);
} else {
$rs = oxDb::getDb(true)->Execute( $sSql);
}
Ersetzen durch:
if ( $this->_aSqlLimit[0] || $this->_aSqlLimit[1]) {
$rs = oxDb::getDb(true)->CacheSelectLimit( $sSql, $this->_aSqlLimit[1], $this->_aSqlLimit[0]);
} else {
$rs = oxDb::getDb(true)->CacheExecute( $sSql);
}
Das funktioniert soweit im Frontend ganz gut, eventuell sollte man das im Admin Bereich lieber sein lassen - friemelt euch das selber raus.
Das ganze kann man jetzt noch erweitern für die oxbase Objekte, dazu muss man halt die Executes durch CacheExecute in core/oxbase.php ändern.