Кэширование

Кэширование обеспечивает класс Cache, описанный в файле includes/cache.php.

У подключения есть два бэкенда: файловое кэширование и кэширование Memcached. По умолчанию подключается файловое кэширование. В параметрах сайта можно подключить кэширование Memcached.

Время актуальности кэша не ограничено. Кэш чистится при редактировании контента модуля из административной части.

В модуле «Параметры сайта» предусмотрены две опции для управления кэшем: «Отключить кэширование» и «Сбросить кэш».

Методы

void close () – Закрывает ранее открытое соединение.

mixed get (string|array $name, string $module, [binary $mode = CACHE_DATA]) – Читает кэш модуля $module с меткой $name.

  • string|array $name: метка кэша
  • string $module: название модуля
  • binary $mode: флаг работы с кэш: CACHE_DATA, CACHE_DEVELOPER, CACHE_GLOBAL

В метке кэша нужно передать все условия, при которых содержимое может меняться (номер страницы, язык сайта и пр.).

Пример:

// запрашиваем данные из кэша для первой страницы модуля Вопрос-Ответ
$cache_meta = array(
    
// уникальное название
    
"name"     => "first_page",
    
// язык сайта
    
"lang_id" => _LANG,
    
// страница сайта, к которой прикреплен модуль
    
"site_id" => $this->diafan->_site->id,
    
// роль пользователя
    
"role_id" => $this->diafan->_users->role_id ? $this->diafan->_users->role_id : 0,
    
// время
    
"time"     => $time
);
$result = $this->diafan->_cache->get($cache_meta, "faq");

boolean save (mixed $data, string|array $name, string $module, [binary $mode = CACHE_DATA]) – Сохраняет данные $data для модуля $module с меткой $name.

  • mixed $data: данные, сохраняемые в кэше
  • string|array $name: метка кэша
  • string $module: название модуля
  • binary $mode: флаг работы с кэш

Пример:

$this->diafan->_cache->save($result, $cache_meta, "faq");

Методы get() и save() используются вместе.

Пример:

$cache_meta = array(
    
"name"     => "first_page",
    
"lang_id" => _LANG,
    
"site_id" => $this->diafan->_site->id,
    
"role_id" => $this->diafan->_users->role_id ? $this->diafan->_users->role_id : 0,
    
"time"     => $time
);
if(!
$result = $this->diafan->_cache->get($cache_meta, "faq"))
{
    
// генерируем данные и записываем их в переменную $result

    //сохранение кеша
    
$this->diafan->_cache->save($result, $cache_meta, "faq");
}

boolean delete (string|array $name, [string $module = '']) – Удаляет кэш для модуля $module с меткой $name. Если функция вызвана с пустой меткой, то удаляется весь кэш для модуля $module.

  • string|array $name: метка кэша
  • string $module: название модуля

Пример:

// удаляем кэш модуля Интернет-магазин
$this->diafan->_cache->delete("", "shop");

// удаляем кэш всех модулей
$this->diafan->_cache->delete("", array());

boolean refresh () – Очистка внутреннего кэша.

boolean flush () – Полная очистка кэша.

Ваши комментарии и дополнения

Ваш комментарий будет первым.

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.