23
Luty
wtorek, 23 Luty 2010

Prosty cache zapytań

Pisałem już wcześniej trochę o mechanizmie cache Cake’a. Dostrzegam coraz więcej zalet z jego wykorzystania. Chciałem się podzielić prostą funkcją, która może znacznie wam ułatwić pracę.

Często wykonywane zapytania jak np. pobranie kilku najpopularniejszych ofert, czy najczęściej oglądanych nie powinny być za każdym razem kierowane do bazy. Oczywiście najprościej jest wykonać raz zapytanie i zapisać do cache na określony czas. Jest to dość proste, ale zawsze można to uprościć.

Poniższą funkcję należy umieścić w AppModel’u. Używa się jej jak zwykłej funkcji find w modelach. Różnica polega na tym, że pobrane dane zapisywane są automatycznie w cache i przy następnym ich odczycie, pobierane są stamtąd o ile nie wygasł ich czas ważności. Użycie tej funkcji jest o tyle wygodne, że aby użyć jej w istniejącej aplikacji, wystarczy w odpowiednich miejscach zamienić wywołanie funkcji find na cacheFind.

Dane z modelu zapisywane są w cache pod kluczem składającym się z nazwy modelu i typu zapytania, czyli: first, list lub all. Jeśli dla tego samego modelu zostało wywołanych kilka różnych zapytań, wyniki połączone zostają w tablicy pod tym samym kluczem.

function cacheFind($type, $other = array())
{
	if (Configure::read('Cache.disable')==true)
		return $this->find($type, $other);
	else
	{
		$data=Cache::read($this->name.'.'.$type);
		$other=serialize($other);
		if (!isset($data[$other]))
		{
			$newData=$this->find($type, $other);
			$data[$other]=$newData;
			Cache::write($this->name.'.'.$type, $data);
		}
		return $data[$other];
	}
}
wtorek, 23 Luty 2010 
Tagi: ,
Kategoria: CakePHP
Możesz śledzić ten wpis przez RSS 2.0 lub dodać komentarz.
Zostaw komentarz

Home Home O mnie O mnie Efekty
JavaScript, jQuery, AJAX
Efekty
Inspiracje
Ciekawe strony WWW
Inspiracje
Programowanie
CakePHP, PHP, MySQL
Programowanie
SEO
Wyszukiwarki
SEO
Web Building
HTML i CSS
Web Building
Projekty Linki Kontakt Kontakt