Sterownik Cache'owania
Jest to zbiór najpopularniejszych metod zebrany wokół szybkiego i dynamicznego cache'owania. Wszystkie sposoby cache'owania, za wyjątkiem tego opartego o pliki, wymagają specyficznych ustawień serwera. Jeśli serwer nie spełnia tych wymagać, zostanie zwrócony wyjątek krytyczny.
Spis treści
Dostępne sterowniki
Przykład użycia
W tym przykładzie zostanie załadowany sterownik cache, wyznaczymy setrownik APC, a jako awaryjne wyjście, cache'owanie oparte o pliki (jeśli APC nie jest dostępne na serwerze).
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if ( ! $foo = $this->cache->get('foo'))
{
echo 'Saving to the cache!<br />';
$foo = 'foobarbaz!';
// Zapis do pamięci cache na 5 minut
$this->cache->save('foo', $foo, 300);
}
echo $foo;
Spis funkcji
is_supported(driver['string'])
Ta funkcja jest wywoływana automatycznie w momencie dostępu do sterownika poprzez $this->cache->get(). Jeśli jednak używasz sterownika indywidualnie, upewnij się że wywołujesz tę funkcję aby być pewnym, że dany sterownik jest obsługiwany przez serwer.
if ($this->cache->apc->is_supported())
{
if ($data = $this->cache->apc->get('my_cache'))
{
// wykonaj działania.
}
}
get(id['string'])
Ta funkcja będzie probować pobrać daną z pamięci cache. Jeśli dana nie istnieje, funkcja zwróci wartość FALSE.
$foo = $this->cache->get('my_cached_item');
save(id['string'], data['mixed'], ttl['int'])
Ta funkcja zapisuje dane w pamięci cache. Jeśli zapis zakończy się niepowodzeniem, funkcja zwroci wartość FALSE.
Opcjonalny, trzeci parametr (czas życia), domyślnie wynosi 60 sekund.
$this->cache->save('cache_item_id', 'data_to_cache');
delete(id['string'])
Ta funkcja usuwa wsazaną daną z pamięci cache. Jeśli usunięcie zakończy się niepowodzeniem, funkcja zwroci wartość FALSE.
$this->cache->delete('cache_item_id');
clean()
Ta funkcja "czyści" całą zawartość pamięci cache. Jeśli usunięcie plików cache zakończy się niepowodzeniem, funkcja zwroci wartość FALSE.
$this->cache->clean();
cache_info()
Ta funkcja zwróci informacje na temat całego cache'u.
var_dump($this->cache->cache_info());
get_metadata(id['string'])
Ta funkcja zwróci dokładne informacje na temat określonej danej cache'u.
var_dump($this->cache->get_metadata('my_cached_item'));
Sterowniki
Alternative PHP Cache (APC) Caching
Wszystkie wymienione powyżej funkcje mogą zostać wywołane bez przypisywania określonego adaptera do loadera sterownika, w ten sposób:
$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);
Po więcej informacji na temat APC, zobacz http://php.net/apc
File-based Caching
W przeciwieństwie do cache'owania w klasie Output, sterownik oparty na plikach, pozwala na cache'owanie fragmentów widoków. Używaj tego z rozwagą i pamiętaj o sprawdzaniu wydajności działania aplikacji, ponieważ w końcu dojdziesz do momentu, w którym operacje typu I/O przestaną pozytywnie wpływac na wydajność cache'owania.
Wszystkie wymienione powyżej funkcje mogą zostać wywołane bez przypisywania określonego adaptera do loadera sterownika, w ten sposób:
$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);
Memcached Caching
Wiele plików Memcached moze zostać określonych w pliku konfiguracyjnym memcached.php, który znajduje się w folderze application/config/.
Wszystkie wymienione powyżej funkcje mogą zostać wywołane bez przypisywania określonego adaptera do loadera sterownika, w ten sposób:
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);
Po więcej informacji na temat Memcached, zobacz http://php.net/memcached
Dummy Cache
Jest to sposób cache'owania, którego zawsze będzie brakować (w zasadzie nie istnieje). Nie przechowuje on danych, ale pozwal na dołączanie logiki związanej z cache'owaniem w środowiskach, w których nie ma wsparcia dla wybranego przez Ciebie sposobu cache'owania.