Jak na cache vlastního routeru
- m4rty
- Člen | 40
Ahoj, mám vytvořený vlastní router a rád bych kešoval routy, které vytváří (počet queries začíná být značně velký :)). Nevím přesně, kam a jak cache začlenit.
V config.neon mám službu databaseRoute, které předávám připojení
k DB
databaseRoute:
class: Storm\DatabaseRoute
arguments: [@dbConnection]
V bootstrap volám službu (nevím, jestli je to správně?)
<?php
$router = $container->router;
$router[] = $container->getService('databaseRoute');
?>
databaseRoute
<?php
function __construct(\NotORM $database) {
$this->database = $database;
}
public function match(\Nette\Http\IRequest $context) {
...vyhledání url v db
}
public function constructUrl(\Nette\Application\Request $request, \Nette\Http\Url $context) {
...
}
?>
Editoval m4rty (14. 8. 2011 11:27)
- m4rty
- Člen | 40
Díky za odpověď. Mám v databázi uložené URL pro každou stránku (např.: admin/news/add). Pro každý url jsem si udělal cache záznam a pojmenoval jsem ho podle url.
<?php
$path = $context->getUrl()->path;
...
$arr = array();
$arr[] = $module .':'.$presenter;
$this->cache->write($path, $arr, array());
..
?>
Nevím jestli je to takhle správně vyřešeno…
Ale nyní řeším problém ve funkci constructUrl(). Tyto URL budu muset ukládat jako další položky cache, nebo to lze vyřešit jinak?
Díky
RSS tématu
Téma zavřeno