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

CodeIgniter User Guide Version 2.1.0


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

CodeIgniter имеет несколько популярных форм быстрого и динамического кеширования. Все способы, за исключением основанных на файлах (file-based) требуют специфических серверных окружений, и будут генерировать фатальные ошибки (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!';

     // сохраняем кеш на 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

Яндекс.Метрика