Podręcznik użytkownika CodeIgniter wersja 2.2.1


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.