Кэширование
Кэширование обеспечивает класс 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());
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.