1.00M
Category: programmingprogramming

Разработчик Битрикс24

1.

Проверить, идет ли запись
Меня хорошо видно && слышно?
Поднимите руку, если все хорошо
Напишите в чат, если есть проблемы

2.

Разработчик Битрикс24:
Bitrix-cache
otus.ru

3.

Доктор твоего битрикс
Константин Шитяков
Team leader и разработчик Битрикс-24 с
10+ лет стажем.
Делал крупные внедрения Битрикса в
известных компаниях: ВкусВилл,
ГазПром, Почта России.
Строил с нуля команды разработки.
В командах, не только выстраивал
процессы разработки, но активно
развивал сотрудников.
Вел курс Битрикс-разработки на других
площадках.

4.

Правила вебинара
Включать камеры
Говорить голосом
Участвовать в вебинарах лучше с компьютера
Условные
обозначения
Индивидуально
Время, необходимое
на активность
Пишем в чат
Off-topic обсуждать в telegram
Активно участвовать
Вопросы вижу в чате,
могу ответить не сразу
Говорим голосом
Документ
Ответьте себе или
задайте вопрос

5.

Цели вебинара
После занятия вы сможете
1.
Кэшировать данные
2.
Отличать и выбирать нужный вид кэша
Смысл вебинара
Зачем вам это уметь
оптимизировать производительность портала

6.

Кеширование

7.

Виды кеширования

8.

Виды кеширования
Авто (компонентов)

9.

Виды кеширования
Авто (компонентов)
Неуправляемое (время)

10.

Виды кеширования
Авто (компонентов)
Неуправляемое (время)
Управляемое (данные)

11.

Виды кеширования
Авто (компонентов)
Неуправляемое (время)
Управляемое (данные)
HTML/Композитный

12.

Виды кеширования
Авто (компонентов)
Неуправляемое (время)
Управляемое (данные)
HTML/Композитный
Тегированный

13.

Место хранения кеша
● None
● Files
● APC (RAM)
● XCache (RAM)
● MemCache (RAM)
● Redis (RAM)

14.

Работа с кодом

15.

PHP кеширование
$cacheTime = 30*60; // время кеширования, указывается в секундах
$cacheId = $_REQUEST['CACHE_ID']; // формируем идентификатор кеша в зависимости от параметров
$cacheDir = '/'; // директория кеша
// создаем объект
$obCache = new CPHPCache; // если кеш есть и он ещё не истек, то
if($obCache->InitCache($cacheTime, $cacheId, $cacheDir))
{
// получаем закешированные переменные
$arResult = $obCache->GetVars();
}
else // иначе обращаемся к базе
{
$arResult = [
'REAL_MADRID' => ['Toni Kroos', 'Lika Modric', 'Federico Valverde'],
'FC_BAYERN' => ['Thomas Müller', 'Leon Goretzka', 'Joshua Kimmich']
];}
// начинаем буферизирование вывода
if($obCache->StartDataCache())
{
// записываем данные в файл кеша
$obCache->EndDataCache(['RESULT' => $arResult]);
}
$obCache->CleanDir(); //сброс

16.

D7 кеширование
$cache = Bitrix\Main\Data\Cache::createInstance();
if ($cache->initCache($cacheTime, $cacheId, $cacheDir))
{
$result = $cache->getVars();
}
elseif ($cache->startDataCache())
{
$result = [
'Kurt Cobain',
'Krist Novoselic',
'Dave Grohl'
];
$cache->endDataCache($result);
}
$cache->clean($cacheId); //сброс

17.

Тегированное кеширование
use \Bitrix\Main\Data\Cache;
use \Bitrix\Main\Application;
$cache = Cache::createInstance(); // Служба кеширования
$taggedCache = Application::getInstance()->getTaggedCache(); // Служба пометки кеша тегами
//необходим одинаковый путь в $cache->initCache() и
$cachePath = 'mycachepath';
$myTag = 'my_awesome_tag';
$taggedCache->startTagCache()
if ($cache->initCache($cacheTime, $cacheId, $cachePath))
{
$vars = $cache->getVars();
}
elseif ($cache->startDataCache())
{
$taggedCache->startTagCache($cachePath);
$vars = [
'date' => date('r'),
'rand' => rand(0, 9999), // Если данные закешированы - число не будет меняться
];
$taggedCache->registerTag($myTag); // Добавляем теги
$cacheInvalid = false; // Если что-то пошло не так и решили кеш не записывать
if ($cacheInvalid)
{
$taggedCache->abortTagCache();
$cache->abortDataCache();
}
// записываем кеш
$taggedCache->endTagCache();
$cache->endDataCache($vars);
}
$taggedCache = Application::getInstance()->getTaggedCache(); // Служба пометки кеша тегами
$taggedCache->clearByTag($myTag); //сброс

18.

Query кеширование
$arElements = \Bitrix\Iblock\ElementTable::getList([
'select' => ['ID', 'NAME'],
'filter' => ['IBLOCK_ID' => 6, 'ACTIVE' => 'Y'],
'limit' => 2,
'cache' => [
'ttl' => 3600
]
])->fetchAll();
//настройки времени кеширования таблиц в /bitrix/.settings.php
'cache_flags' => array(
'value'=> array(
"b_iblock_element_min_ttl" => 60,
"b_iblock_element_max_ttl" => 86400,
)
),
\Bitrix\Iblock\ElementTable::getEntity()->cleanCache(); //сброс

19.

HTML кеширование
$obCache = new CPageCache; // создаем объект
if($obCache->StartDataCache($cacheTime, $cacheId, $cacheDir))
{
echo "<div style='background: red; width: 100px; height: 100px'>Hello, HTML cache!</pre>";
// записываем предварительно буферизированный вывод в файл кеша
$obCache->EndDataCache();
}
$obCache->CleanDir(); //сброс

20.

Сброс кеша Highload-блоков
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'OtusColorOnAfterAdd', 'clearOtusColorCache');
$eventManager->addEventHandler('', 'OtusColorOnAfterUpdate', 'clearOtusColorCache');
$eventManager->addEventHandler('', 'OtusColorOnAfterDelete', 'clearOtusColorCache');
function clearBrandReferenceCache($event)
{
$event->getEntity()->cleanCache();
}

21.

Итоги и рефлексия: что же это было?

22.

Что изучили?
Подводим итоги
Вопрос
Какие есть виды кеша?

23.

Что изучили?
Подводим итоги
Вопрос
Какие есть виды кеша?
Ответ
авто, неуправляемый, управляемый, HTML,
тегированный

24.

Что изучили?
Подводим итоги
Вопрос
Где настраивается кеш?

25.

Что изучили?
Подводим итоги
Вопрос
Где настраивается кеш?
Ответ
административный раздел, настройки
компонента, /bitrix/.settings.php

26.

Что изучили?
Подводим итоги
Вопрос
Как создать кеш кодом?

27.

Что изучили?
Подводим итоги
Вопрос
Как создать кеш кодом?
Ответ
CPHPCache, Bitrix\Main\Data\Cache

28.

Цели вебинара
После занятия вы сможете
1.
Кэшировать данные
2.
Отличать и выбирать нужный вид кэша
Смысл вебинара
Зачем вам это уметь
оптимизировать производительность портала

29.

Список материалов для изучения
Курс разработчика. Битрикс
Настройка кеша
CPhpCache
CPageCache
Cache D7
Тегированный кеш
Redis/Memcache
Redis guide
Композитный сайт

30.

Следующий вебинар
10 декабря 2024 (понедельник)
Кастомизация
компонентов Bitrix24
Ссылка на вебинар
будет в ЛК за 15 минут
Материалы
к занятию в ЛК —
можно изучать
Обязательный
материал обозначен
красной лентой

31.

Заполните, пожалуйста,
опрос о занятии в ЛК

32.

Спасибо за внимание!
Приходите на следующие вебинары
Константин Шитяков
Преподаватель курса разработчик Битрикс-24
https://t.me/konstantin_shitiakov
English     Русский Rules