Nette\Caching – vlozenie objektov
- piler
- Člen | 111
Rozmyslam nad tym vyuzit Nette\Caching na ukladanie objektov, len neviem ci je to spravny postup. Mam napr. objekt User() a ten si nacitava svoje data z databazy. Napr. User(1) su data z tabulky users s ID=1. User s tymto ID-ckom, moze byt pocas behu aplikacie volany viackrat. Takze by som rad „nakesoval“ tento objekt aby sa nemusel robit znova dotaz na databazu.
Je rozumne tento objekt napr. serializovat a vlozit do cache a potom ho v pripade potreby vytiahnut, unserializovat a vratit? Je este mozne, aby cache drzala tieto data len pocas jedneho „sedenia“? Cize, ked sa stranka nacita 2×, tak sa cache vymaze? V dokumentacii je mozno nastavit expire: „expire ⇒ (int) čas, kdy obsah vyexpiruje“, cize ked to napr. nastavim na 0, tak by to malo fungovat?
Druha moznost mi este napadla pouzit staticky parameter objektu:
<?php
class User
{
static private $cache=Array();
private function __construct($userId=0)
{
// load from database
}
static public function create($userId=0)
{
if (isSet(self::$cache[$userId])) {
return self::$cache[$userId];
} else {
$user = new self($userId);
self::$cache[$userId] = $user
return $user;
}
}
}
?>
Len som si nie isty, co ma v tomto pripade caka v buducnosti.
Dik za rady.
- David Grudl
- Nette Core | 8218
Použít diskovou cache je nevhodné, řešením je tedy statické úložiště. Příčemž je možné použít i třídu Cache a doprogramovat statické úložiště, například třídu StaticStorage. Jako vzor by mohla posloužit DummyStorage.
- piler
- Člen | 111
David Grudl napsal(a):
Použít diskovou cache je nevhodné, řešením je tedy statické úložiště. Příčemž je možné použít i třídu Cache a doprogramovat statické úložiště, například třídu StaticStorage. Jako vzor by mohla posloužit DummyStorage.
Vdaka za nazor. Skusim vytvorit triedu na pracu so static cache :).