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.