Cachen von CJuiAutocomplete oder doch im Controller?

Hi,

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?




$this->widget('zii.widgets.jui.CJuiAutoComplete', array());



Im Controller befinden sich zwei Sql Abfragen




$models = Cars::model()->with('conjugations')->findAll(array())

$models = Marcs::model()->with('conjugations')->findAll(array())



Die Ergebnisse werden in ein Array gespeichert und an CJSON::encode( $suggest ); übergeben

thx für eure Gedankengänge

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;

Die Datenbankeinträge ändern sich sehr selten. Von 10.000 Einträgen ca. 1 / Monat.

Kannst du den Code etwas erklären?

Pro Abfrage werden zwei Parameter übergeben, d.h. ich muss einen Index über zwei Parameter definieren.

  1. Wie geht das?

  2. Wo werden die Daten gespeichert? Wie lege ich den Speicher fest?

  3. Wie kann ich den Cache erneuern, wenn der Datensatz geändert worden ist?

thx!

Wird eigentlich alles relativ verständlich im Guide erklärt.:

http://www.yiiframework.com/doc/guide/1.1/de/caching.overview

  1. 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.

  2. http://www.yiiframework.com/doc/guide/1.1/de/caching.overview

  3. http://www.yiiframework.com/doc/guide/1.1/de/caching.data#sec-1