ich habe grad ein rechenaufwendiges AutoComplete programmiert, dass beim ersten Mal aus der DB gezogen werden muss, aber anschließend nicht mehr geändert wird.
Um meine DB etwas zu entlasten würde ich die Ergebnisse zwischenspeichern.
Wie geht ihr da vor?
Bittet CJuiAutoComplete ein Cache Mechanismus an oder sollte ich das schon im Model machen? Wenn ja, wie würdet ihr da vorgehen?
Wenn die DB Daten sich nicht oder nur selten ändern, würde ich den Output von CJSON::encode() cachen und die Datenbankabfragen nur setzten, wenn der Cache invalid ist:
<?php
if(($json=Yii::app()->cache->get('json'))=== false){
// do db stuff here
$json = CJSON::encode($someData);
Yii::app()->cache->set('json', $json, 0, new CCacheDependecy())
}
echo $json;
Wenn du nur eine überschaubare Anzahl an Möglichen Werten hast, oder diese Werte nur teile des entstehenden jsons beeinflussen, würde ich diese unter verschiedenen Schlüsseln speichern, bzw. nur den Variablen anteil neu berechnen lassen, und den rest aus dem Cache bedienen.