Cache presenteru vytvorenie a ziskanie

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
xrep
Člen | 51
+
0
-

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

CZechBoY
Člen | 3608
+
0
-

Doporucuju aspon prolitnout dokumentaci ke cache.
Ja cachuju vetsinou jen v modelove vrstve a obcas v sablone.

xrep
Člen | 51
+
0
-

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
+
0
-

@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
+
0
-

Odkaz do dokumentace, kde se popisuje jak cachovat výstup funkce:
https://doc.nette.org/cs/caching#…

xrep
Člen | 51
+
0
-

@CZechBoY
no a mna prave zaujima ta funkcia, ktorej vystup budem cachovat viz „Cize donutit presenter aby sa vykonal a vytvoril nacachovanu verziu“. Nie to ako mam cachovat vystup funkcie

CZechBoY
Člen | 3608
+
+1
-

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('[]');
		});
	}
}