Není nastavení cache jako nastavení cache

21. 11. 2015

Nette umožňuje některým svým věcem (nechci říct službám, ani komponentám, prostě různým věcem) nastavit žádnou cache, tedy Nette\Caching\Storages\DevNullStorage. Bohužel, ne vždy je to pravda a ne vždy to musí fungovat.

Latte

Řekneme Latte, aby se necachovalo:
services:
	nette.latteFactory:
		setup:
			- setTempDirectory(NULL)
Zároveň přidáme nějaká makra aplikace:
latte:
	macros:
		- App\Utils\Macros

Spustíme aplikaci, makra fungují jak mají. Jdeme datlit - dnes je in cpát všechny kousky aplikace (aplikací) do composer balíčku, tedy vytvoříme samostatný repozitář na užitečná Latte makra a postneme ho na facebook. Kámen úrazu přichází ve chvíli, kdy se radujeme z vlastní tvořivosti při vytváření nových jmenných prostorů právě založeného repozitáře. Pojmenujme nový namespace našich čupr maker Cupr\Macros. V ten moment musíme pozměnit namespace maker v configu naší aplikace:

latte:
	macros:
		- Cupr\Macros
Světe div se, při spuštění aplikace na nás svítí Tracy, že prej Class App\Utils\Macros not found. Takže Latte cachuje svoje věci nehledě na konfiguraci. Ta ve skutečnosti mění nastavení cachování jen {cache} maker. Haha, paradox. Tak smažte cache a apliakce zase pojede jako za mlada.

DIC

Používá vlastní cachovací mechanizmus. Tečka.

NDBT

Třídy NDBT, které potřebují cachovat, vyžadují od DIC Nette\Caching\Istorage, takže ten se dá podstrčit v configu (jak to píše dokumentace):

services:
	cacheStorage:
		class: Nette\Caching\Storages\DevNullStorage

Good, vyřešeno.

RobotLoader

RobotLoader si vytváří cache ještě před zpracováním configu(ů), což dává smysl, takže mu je též u zadku, jestli po něm v configu něco chcete. Pozor, to se týká jen configu. Chování upravit lze pomocí Nette\Loaders\RobotLoader::setCacheStorage( Nette\Caching\IStorage $storage ).

Aplikační cache

Služby aplikace budou v jednodušších případech vyžadovat od DIC Nette\Caching\IStorage, stejně jako například NDBT.


Sečteno, podtrženo - chování cache můžete ovlivnit jen u svých služeb a NDBT. Makra {cache} nikdo nepoužívá.


Přidat komentář

Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. V pořádku Další informace