Košík je prázdný

Cache (mezipaměť) je klíčovým prvkem pro zvýšení rychlosti a efektivity webových aplikací. Framework Nette nabízí pro práci s cache komplexní řešení, které umožňuje snadno ukládat data, která se často nezmění, a tím značně zrychlit načítání aplikace pro koncového uživatele. V tomto článku si ukážeme, jak v Nette frameworku vytvořit a spravovat cache.

Základy cachování v Nette Nette Framework používá pro práci s cache službu Cache, která je součástí balíčku Nette\Caching. Pro využití této služby je nejprve potřeba ji zaregistrovat v konfiguračním souboru aplikace, obvykle v config.neon. Cache může být uložena v různých úložištích, jako jsou soubory, Redis, Memcached nebo dokonce v paměti.

Registrace služby Cache

services:
    - Nette\Caching\Cache(%tempDir%/cache)

Použití Cache Cache se v aplikaci používá prostřednictvím injektování závislostí. Můžeme si nechat injektovat instanci Nette\Caching\Cache do presenteru nebo do jakékoliv jiné služby, s kterou pracujeme.

Příklad ukládání a načítání z cache

class MyService
{
    private $cache;

    public function __construct(Nette\Caching\Cache $cache)
    {
        $this->cache = $cache;
    }

    public function getSomething()
    {
        $cachedValue = $this->cache->load('myKey');
        if ($cachedValue === null) {
            // Hodnota není v cache, vypočítáme ji
            $value = // nějaký výpočet nebo dotaz do databáze
            $this->cache->save('myKey', $value, [
                Cache::EXPIRE => '60 minutes', // nastavení expirace
            ]);
            return $value;
        }

        return $cachedValue;
    }
}

Invalidace cache

Jednou z klíčových vlastností cache je možnost její invalidace. Nette umožňuje invalidovat cache na základě tagů, času nebo klíčů. To je užitečné, pokud chceme například invalidovat všechny cache položky, které se vztahují k určité entitě, pokud dojde k její změně.

$this->cache->save($key, $value, [
    Cache::TAGS => ['tag1', 'tag2'],
]);

// Invalidace cache podle tagu
$this->cache->clean([
    Cache::TAGS => ['tag1'],
]);

Správné využití cache může výrazně zlepšit výkon a reakční dobu webových aplikací. Nette Framework nabízí flexibilní a snadno použitelné řešení pro cachování, které umožňuje aplikacím být rychlejšími a efektivnějšími. Díky možnostem invalidace a nastavení expirace můžeme zajistit, že uživatelé vždy získají aktuální data. Používáním cache tak můžeme snížit zátěž serveru a zlepšit uživatelskou spokojenost.