Драйвер Кеширования
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
Это кеширующий бэкенд, который будет всегда ‘недостовать.’ Он не хранит никаких данных, но позволяет держать ваш код кеширования в среде, где не поддерживается выбранный вами кеш.