Сначала расскажу о причинах появления такого вопроса.
Допустим есть каталог интернет магазина bitrix по адресу /catalog/
Допустим берём 2 браузера с чистыми сессиями(удалены все cookie) в моём случаи firefox и edge.
Берём firefox заголиниваемся из админки bitrix под админом и открываем /catalog/ в результате создаётся файл кеша /bitrix/cache/s1/bitrix/catalog.section/b8/b8d7461b00962280ab9221410e95535c.php
Теперь берём edge не залогиниваясь сразу открываем /catalog/ в результате создаётся другой файл кеша по адресу /bitrix/cache/s1/bitrix/catalog.section/9b/9b905bd72647c5602f811e9d2c22b76c.php
Теперь если залогиниться в edge под админом и открыть /catalog/ то в edge будет грузиться информация из файла кеша который был создан при посещении с браузера firefox.
Кроме того если очистить файлы кеша, то залогиненый под админом пользователь вновь создаст файл кеша по адресу /bitrix/cache/s1/bitrix/catalog.section/b8/b8d7461b00962280ab9221410e95535c.php
Следовательно формирование имени файла кеша каким то образом привязано к пользователю, вопрос каким именно?
Суть в том что у товаров есть лайки, реализованные не коробочными методами, и когда эти лайки добавляются или удаляются, то управляемый кеш каталога не сбрасывается, что приводит к выводу старых данных. Я понимаю что можно использовать некерируемый component_epilog.php, но пришло более оптимальное решение, если понять по какому алгоритму создаётся пусть файла кеша(а он думаю как то привязан к id пользователя), тогда при удалении или добавлении лайка по api можно сбрасывать кэш, который приведёт к перегенерации страницы и следоватьельно сбросу кеша. Весь вопрос в том как именно сбросить кеш компонента каталог привязанно к пользователю.
Так же замечено, что в следующем коде:
$obCache = new CPageCache;
# время кеширования в секундах
$lifeTime = 100;
# формируем ID кеша в зависимости от всех параметров
# которые могут повлиять на результирующий HTML
$cacheID = "a888899";
# инициализируем буферизирование вывода
if($obCache->StartDataCache($lifeTime, $cacheID, "/")) {
echo "<p>Рандом:" . mt_rand(1,9999) . " закешированое содержание страницы</p>\n";
$obCache->EndDataCache();
// $obCache->clean($cacheID);
} else {
echo "Не выполнено";
}
Адрес файла кеша всегда одинаков для постоянного $cacheID.
Поэтому вопрос, для компонента каталог интернет магазина используется похожий принцип или нет? То есть может ли быть такое что в случаи каталогом кеш аналогичным образом формируется путём создания $cacheID в формировании которого принимает участие Id пользователя?
Допустим есть каталог интернет магазина bitrix по адресу /catalog/
Допустим берём 2 браузера с чистыми сессиями(удалены все cookie) в моём случаи firefox и edge.
Берём firefox заголиниваемся из админки bitrix под админом и открываем /catalog/ в результате создаётся файл кеша /bitrix/cache/s1/bitrix/catalog.section/b8/b8d7461b00962280ab9221410e95535c.php
Теперь берём edge не залогиниваясь сразу открываем /catalog/ в результате создаётся другой файл кеша по адресу /bitrix/cache/s1/bitrix/catalog.section/9b/9b905bd72647c5602f811e9d2c22b76c.php
Теперь если залогиниться в edge под админом и открыть /catalog/ то в edge будет грузиться информация из файла кеша который был создан при посещении с браузера firefox.
Кроме того если очистить файлы кеша, то залогиненый под админом пользователь вновь создаст файл кеша по адресу /bitrix/cache/s1/bitrix/catalog.section/b8/b8d7461b00962280ab9221410e95535c.php
Следовательно формирование имени файла кеша каким то образом привязано к пользователю, вопрос каким именно?
Суть в том что у товаров есть лайки, реализованные не коробочными методами, и когда эти лайки добавляются или удаляются, то управляемый кеш каталога не сбрасывается, что приводит к выводу старых данных. Я понимаю что можно использовать некерируемый component_epilog.php, но пришло более оптимальное решение, если понять по какому алгоритму создаётся пусть файла кеша(а он думаю как то привязан к id пользователя), тогда при удалении или добавлении лайка по api можно сбрасывать кэш, который приведёт к перегенерации страницы и следоватьельно сбросу кеша. Весь вопрос в том как именно сбросить кеш компонента каталог привязанно к пользователю.
Так же замечено, что в следующем коде:
$obCache = new CPageCache;
# время кеширования в секундах
$lifeTime = 100;
# формируем ID кеша в зависимости от всех параметров
# которые могут повлиять на результирующий HTML
$cacheID = "a888899";
# инициализируем буферизирование вывода
if($obCache->StartDataCache($lifeTime, $cacheID, "/")) {
echo "<p>Рандом:" . mt_rand(1,9999) . " закешированое содержание страницы</p>\n";
$obCache->EndDataCache();
// $obCache->clean($cacheID);
} else {
echo "Не выполнено";
}
Адрес файла кеша всегда одинаков для постоянного $cacheID.
Поэтому вопрос, для компонента каталог интернет магазина используется похожий принцип или нет? То есть может ли быть такое что в случаи каталогом кеш аналогичным образом формируется путём создания $cacheID в формировании которого принимает участие Id пользователя?