Драйвер кеширования
CodeIgniter предоставляет обертки для некоторых популярных методов быстрого и динамического кеширования. Все методы, за исключением тех, что основаны на файлах, имеют специфичные серверные требования, и возможны ошибки Fatal Exception, если эти требования не выполнены.
Содержание
Доступные драйверы
Пример использования
Следующий пример загрузит для использования драйвер кеширования 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!';
// Save into the cache for 5 minutes
$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'))
{
// do things.
}
}
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 в конфигурационном файле memcached.php, находящемся в директории application/config/.
Все функции, перечисленные выше, могут быть использованы без адаптера к загрузчику драйвера:
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);
Для большей информации о Memcached пожалуйста читайте документацию http://php.net/memcached
Заглушка
Это кеширующий бэкенд, который всегда будет опущен. Он не хранит данных, но позволяет вам хранить код для кеширования в среде, который не поддерживает выбранный метод кеширования.