Cache presenteru vytvorenie a ziskanie
- xrep
- Člen | 51
Ahoj,
v projekte mame aktualne klasicke routovanie poskytovane z Nette, cize mame URL ka napriklad takto
/novinky/12/uzasna-novinka
Ked si zoberiem tu novinku cesta ku nej z pohladu presenteru vyzera takto:
:Front:News: id ⇒ 12, slug ⇒ ‚uzasna-novinka‘
- Ako si viem na zaklade tejto cesty vytiahnut nacachovanu verziu z /temp/ adresara ( pouzivame defaultne cachovanie z Nette ).
- Ak ta nacachovana verzia neexistuje ako si ju viem vytvorit? Cize donutit presenter aby sa vykonal a vytvoril nacachovanu verziu?
Dakujem
- xrep
- Člen | 51
Aku? Ak myslis toto https://doc.nette.org/cs/caching tak toto som cital tam je ale obecne popisane ako sa da pouzit Cache komponenta, co je super, ale tie otazky ktore som polozil to nezodpoveda. Alebo mi nieco unika.
- Myiyk
- Člen | 321
@xrep
Ako si viem na zaklade tejto cesty vytiahnut nacachovanu verziu z /temp/ adresara ( pouzivame defaultne cachovanie z Nette ).
temp adresář neřešíš, používáš api
Ak ta nacachovana verzia neexistuje ako si ju viem vytvorit? Cize donutit presenter aby sa vykonal a vytvoril nacachovanu verziu?
je to popsáno v dokumentaci https://doc.nette.org/cs/caching
Na co přesně chceš udělat tu cache?
- CZechBoY
- Člen | 3608
Odkaz do dokumentace, kde se popisuje jak cachovat výstup funkce:
https://doc.nette.org/cs/caching#…
- CZechBoY
- Člen | 3608
Nechápu…
pošlu ukázku zdrojáku jestli ti nestačí ta v dokumentaci
class HomepagePresenter extends Presenter
{
public function renderDefault()
{
$this->template->data = $this->model->getData();
}
}
class Model
{
private $cache;
public function __construct(Caching\IStorage $storage)
{
$this->cache = new Cache($storage);
}
/**
* @return array
*/
public function getData()
{
return $this->cache->wrap(function () {
return $this->db->query('SELECT * FROM megatable')->fetchAssoc('[]');
});
}
}