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