NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Luboš Zápotočný:22.5.2017 11:36

Ahoj

jak jde instancovat Cache, abych kdykoli si ji zavolám nemusel předávat i IStorage.

Našel jsem něco v dokumentaci, ale nevím jestli to je správně, a jestli to bude fungovat tak jak má.

tam mají

services:
    cacheStorage:
        class: Nette\Caching\Storages\FileStorage(%tempDir%)

takže to mi globálně nahradí

/**
     * @var Cache
     */
    private $cache;

    public function __construct(IStorage $storage)
    {
        $this->cache = new Cache($storage, "temp");
    }

a budu moc volat jenom

/**
     * @var Cache
     * @inject
     */
    public $cache;

??

Díky

 
Odpovědět
22.5.2017 11:36
Avatar
Odpovídá na Luboš Zápotočný
Martin Konečný (pavelco1998):22.5.2017 14:02

Ahoj,
já to v projektu řeším tak, že mám v configu:

services:
        variablesCache: Nette\Caching\Cache(Nette\Caching\Storages\FileStorage(%tempDir%), "variables")

        variables:
                class: App\Model\Variables
                setup:
                        - setCache(@variablesCache)

A pak v kódu (zjednodušeně):

class Variables
{

        private $cache;

        public function setCache($cache)
        {
                $this->cache = $cache;
        }

}

Tou direktivou "setup" v configu zajistím, že mi DI Container automaticky zavolá metodu setCache a předá tu službu @variablesCache, jakmile se udělá instance té třídy Variables.

Nahoru Odpovědět
22.5.2017 14:02
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Luboš Zápotočný:1.6.2017 6:26

To zní Dobre, myslím ze to taky takhle využiji. Co všechno je Dobre takhle ukládat do cache v nette a doctrine aby to bylo co nejvíc svizné?

 
Nahoru Odpovědět
1.6.2017 6:26
Avatar
Odpovídá na Luboš Zápotočný
Martin Konečný (pavelco1998):1.6.2017 15:03

Obecně je dobré tam ukládat informace, které jsou složitější na výkon (např. Doctrine si tam ukládá informace o entitách dle anotací), případně které se často nemění. Já třeba mám ve hře cca 180 proměnných, které jsou uložené jako záznamy v databázi. Ty se ale mění jen zřídka, tak aby se všechny nemusely pořád tahat z databáze, tak si je uložím do cache, abych neměl stovku DB dotazů na stránku.

Jinak ale s cachováním moc zkušenost nemám, někdo zde by ti určitě dokázal odpovědět lépe.

Editováno 1.6.2017 15:03
Nahoru Odpovědět
1.6.2017 15:03
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.