5.2. Caching af SQL-kald

Ved at bruge runSqlCommand-metoden får du den lille bonus at du automatisk drager nytte af myggens caching-system. Det betyder at hver unik SQL-forespørgsel bliver cachet, og næste gang du laver den samme forespørgsel får du straks en cachet version, uden overhovedet at tale med databasen. Dette plejer i runde tal at give en hastighedsbesparelse på en faktor 100 for selv simple forespørgsler.

Men da dine data i den eksterne database jo antageligt ændrer sig er der også behov for at tømme cachen fra tid til anden, og til det formål har du adgang til metoden cleanSqlCache(). Når du ønsker at tømme cachen for alle SQL-kald lavet gennem runSqlCommand gør du ganske enkelt således:

M2_SQL::cleanCache();

Det er dog også muligt at være lidt mere raffineret og kun tømme udvalgte dele af SQL-cachen. Det forudsætter at du har givet en cacheGroup-parameter med i dine runSqlCommand-kald, så du kan bestemme hvilke dele der skal slettes fra cachen igen.

Altså kan du lave din forespørgsel således:

$sql = 'select * from users';
$opts = array('cacheGroup' => 'users');

$res = M2_SQL::query($sql, $opts);

Nu er din forespørgsel cachet i en cache-gruppe ved navn "users".

Vil du senere tømme cachen, men kun fjerne forespørgsler i cache-gruppen "users" gør du således:

M2_SQL::cleanCache('users');