Драйвер Кеширования

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

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

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

$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));

if ( ! $foo = $this->cache->get('foo'))
{
        echo 'Saving to the cache!
'
; $foo = 'foobarbaz!'; // Храним в кеше 5 минут $this->cache->save('foo', $foo, 300); } echo $foo;

Вы можете также использовать префикс для имен элементов кеша, используя key_prefix установку, которая является полезной для избежания столкновений при множественном использовании приложений в одной среде.

$this->load->driver('cache',
        array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => 'my_')
);

$this->cache->get('foo'); // Получите записи кэша с именем 'my_foo'

Класс-ссылка

class CI_Cache
is_supported($driver)
Параметры:
  • $driver (строка) – the name of the caching driver
Возвращает:

TRUE если поддерживается, FALSE если нет

Возвращаемый тип:

Булево

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

if ($this->cache->apc->is_supported())
{
        if ($data = $this->cache->apc->get('my_cache'))
        {
                // делаем вещи.
        }
}
get($id)
Параметры:
  • $id (строка) – Имя элемента кеша
Возвращает:

Значение элемента или FALSE если не найден

Возвращаемый тип:

Смешанный

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

$foo = $this->cache->get('my_cached_item');
save($id, $data[, $ttl = 60[, $raw = FALSE]])
Параметры:
  • $id (строка) – Имя элемента кеша
  • $data (смешанные) – Данные, которые необходимо сохранить
  • $ttl (число) – Время в секундах (по умолчанию 60)
  • $raw (булево (bool)) – Нужно ли сохранять необработанные значения
Возвращает:

TRUE если успех, FALSE при неудаче

Возвращаемый тип:

Строка

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

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

Примечание

$raw параметр используется только при APC и Memcache, для того, чтобы позволить использование increment() и decrement().

delete($id)
Параметры:
  • $id (строка) – имя кэшируемого элемента
Возвращает:

TRUE если успех, FALSE при неудаче

Возвращаемый тип:

Булево

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

$this->cache->delete('cache_item_id');
increment($id[, $offset = 1])
Параметры:
  • $id (строка) – ID кеша
  • $offset (число) – шаг/значение для добавления
Возвращает:

Новое значение при успехе, FALSE при неудаче

Возвращаемый тип:

Смешанный

Выполняет увеличение сохраненного значения.

// 'итератор' имеет значение 2

$this->cache->increment('iterator'); // 'итератор' теперь равен 3

$this->cache->increment('iterator', 3); // 'итератор' теперь равен 6
decrement($id[, $offset = 1])
Параметры:
  • $id (строка) – ID кеша
  • $offset (число) – шаг/значение для сокращения
Возвращает:

Новое значение при успехе, FALSE при неудаче

Возвращаемый тип:

Смешанный

Выполняет уменьшение сохраненного значения.

// 'итератор' имеет значение 6

$this->cache->decrement('iterator'); // 'итератор' теперь равен 5

$this->cache->decrement('iterator', 2); // 'итератор' теперь равен 3
clean()
Возвращает:TRUE если успех, FALSE при неудаче
Возвращаемый тип:булево

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

$this->cache->clean();
cache_info()
Возвращает:Информацию всей базы данных кеша
Возвращаемый тип:Смешанный

Этот метод возвратит информацию на весь кэш.

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

Примечание

Возвращаемая информация и структура данных зависит от того, какой адаптер используется.

get_metadata($id)
Параметры:
  • $id (строка) – Имя элемента кеша
Возвращает:

Метаданные для кэшируемого элемента

Возвращаемый тип:

Смешанный

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

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.

Файловое кеширование

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

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

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

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

Несколько Memcached серверов можгут быть указаны в memcached.php конфигурационном файле, размещенный в _application/config/* каталоге.

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

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

Для получения дополнительной информации о Memcached, посмотрите http://php.net/memcached.

Кеширование WinCache

Под Windows, вы можете также использовать WinCache драйвер.

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

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

Для получения дополнительной информации о WinCache, посмотрите http://php.net/wincache.

Кеширование Redis

Redis в памяти ключ-значение, которые могут работать в LRU режиме кеширования. Чтобы использовать его, вам нужно Redis сервер и phpredis PHP расширение.

Параметры конфигурации для подключения к серверу redis должны храниться в application/config/redis.php файле. Доступные опции:

$config['socket_type'] = 'tcp'; //`tcp` or `unix`
$config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type
$config['host'] = '127.0.0.1';
$config['password'] = NULL;
$config['port'] = 6379;
$config['timeout'] = 0;

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

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

Для получения дополнительной информации о Redis, посмотрите http://redis.io.

Кеширование Dummy

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