Similar presentations:
Разработчик Битрикс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
programming