Temat: W jaki sposób cache'ować wyniki na stronie gdzie wynik...
Ja robię to tak, że keszuję wynik działania jakiejś funkcji/metody w postaci np.:
public function getProductList($categoryId, $useCache = true, $cacheTime = 300) {
if ($useCache) {
$cacheManager = \DependencyInjector::get('CacheManager');
$key = 'getProductList_'.$categoryId;
$result = $this->getProductList($categoryId, false);
return $cacheManager->getOrSetCache($result , $key, $cacheTime );
}
....kod pobierający listę produktów - np. przez zapytanie SQL....
return $productList;
}
I to wszystko - bardzo uniwersalny mechanizm, można tym keszować niemal wszystko, nie ważne czy dane pochodzą z SQL czy np. usługi SOAP.
W przykładzie $categoryId może pochodzić z parametru GET
$cacheManager to oczywiście manager keszowania i można go sobie samemu napisać albo skorzystać z jakiegoś gotowego.
Metoda managera "getOrSetCache" zawsze zwraca rezultat z keszu, jeżeli w keszu nie ma rezultatu albo jest przeterminowany to przed zwrotem go do tego keszu wsadza.
Co więcej, taki mechanizm jest całkowicie transparentny dla zewnętrznego kodu uruchamiającego metodę.
Ten post został edytowany przez Autora dnia 11.09.15 o godzinie 16:03