Kešování výsledku SQL dotazu v rámci requestu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thunderbuff
- Člen | 164
V aplikaci se připojuji k několika databázím. Během requestu jim aplikace pošle několik dotazů, z nichž některé jsou stejné. Mohu nějak kešovat výsledek dotazu v rámci aktuálního requestu, aby se dotaz na databázi nemusel posílat vícekrát? Můj kód vypadá takto:
<?php
$connection = new \Nette\Database\Connection($dsn, $username, $password);
$connection->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
?>
- petr.pavel
- Člen | 535
Jestli je to stejné jako u NotORM, tak tahle CacheStorage kešuje jen strukturu databáze, ne výsledek dotazu. Řešením podle mě je vytvořit si na tenhle dotaz službu (např. přes config) a používat ji. Tj. nesestavovat dotaz znovu přes obecné connection a přidávat table, where… NDB už samo pozná, že dotaz položilo a další její volání vrátí stejná data bez komunikace s databází.