Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Драйвер кеширования

CodeIgniter имеет несколько популярных форм быстрого и динамического кеширования. Все способы, за исключением основанных на файлах (file-based) требуют специфических серверных окружений, и будут генерировать фатальные ошибки (Fatal Exception), если требуемое окружение недоступно.

## Содержание

- Пример использования
- Справка по функциям

### Доступные драйверы

- Альтернативное кеширование PHP (APC) Caching
- Кеширование на файлах (File-based)
- Кеширование Memcached
- Заглушка кеширования

## Пример использования

Следующий пример загружает драйвер кеширования, обозначает для использования APC, и использует кеширование на файлах, если APC не доступно в окружении хостинга.

`$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if ( ! $foo = $this->cache->get('foo'))
{
echo 'Saving to the cache!<br />';
$foo = 'foobarbaz!';
// сохраняем кеш на 5 минут
$this->cache->save('foo', $foo, 300);
}
echo $foo;`

# Справка по функциям

## is_supported(driver['string'])

Эта функция автоматически вызывается при доступе к драйверу через `$this->cache->get()`. Однако, если используются индивидуальные драйверы, убедитесь в том, что вызываемый драйвер поддерживается в серверном окружении.

`if ($this->cache->apc->is_supported())
{
if ($data = $this->cache->apc->get('my_cache'))
{
// сделать что-то.
}
}`

## get(id['string'])

Эта функция будет пытаться получить элемент из хранилища кешей. Если элемент не существуют, функция вернет `FALSE`.

`$foo = $this->cache->get('my_cached_item');`

## save(id['string'], data['mixed'], ttl['int'])

Эта функция сохранит элемент в хранилище кешей. Если сохранить не получилось, функция вернет `FALSE`.

Третий опциональный параметр (Time To Live — время жизни) по умолчанию устанавливается в 60 секунд.

`$this->cache->save('cache_item_id', 'data_to_cache');`

## delete(id['string'])

Эта функция удалит указанный элемент из хранилища кешей. Если удаление не получилось, функция вернет `FALSE`.

`$this->cache->delete('cache_item_id');`

## clean()

Эта функция очистит весь кеш. Если удаление не получилось, функция вернет `FALSE`.

`$this->cache->clean();`

## cache_info()

Эта функция вернет информацию о целом кеше.

`var_dump($this->cache->cache_info());`

## get_metadata(id['string'])

Эта функция вернет детальную информацию о конкретном элементе в кеше.

`var_dump($this->cache->get_metadata('my_cached_item'));`

# Драйверы

## Альтернативный кеш PHP (APC)

Все функции, перечисленные выше, могут быть доступны без указания конкретного адаптера драйвера:

`$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);`

Больше информации об APC смотрите здесь: http://php.net/apc

## Кеширование на файлах

В отличии от кеширования класса Output, драйвер кеширования на файлах позволяет сохранять кусочки отображений. Используйте с осторожностью, и убедитесь в том, что выполнено тестирование производительности приложения, так как интенсивные операции дискового ввода-вывода могут отрицательно сказаться на эффективности кеширования.

Все функции, перечисленные выше, могут быть доступны без передачи параметра, уточняющего конкретный драйвер:

`$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);`

## Кеширование Memcached

В конфигурационном файле memcached.php, находящемся в директории `application/config/`, можно указать много серверов memcached.

Все функции, перечисленные выше, могут быть доступны без передачи конкретного адаптера к драйверу, как показано ниже:

`$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);`

Больше информации о Memcached читайте http://php.net/memcached

## Кеш-заглушка

Это бэкенд кеша, который всегда «пропускается». Он не сохраняет данных, но позволит вам сохранить кеширующий код на месте в окружениях, где не вы не будете делать кеширование.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter