"Управляемый кеш" не должен удалять валидные файлы кеша

Рейтинг: 5.4443  
На голосовании
Предложил Пользователь 158956 16.02.2016 17:12:38

"Управляемый кеш" не должен удалять валидные файлы кеша

Проблема

Кажется, я - единственный кто не знал как работает "управляемый кеш".
Давайте проверим знаете ли вы! А он работает так:
Если "управляемый кеш" включен (а это рекомендуется и он включен по умолчанию!), то при изменении/добавлении/удалении одного элемента инфоблока удаляются ВСЕ файлы кеша ВСЕХ элементов этого инфоблока. Не знали?
Техподдержка подтверждает - это действительно так и это не баг! И я единственный, кто чувствует дискомфорт от этого? Поделитесь в комментариях своим мнением!

Представьте, у вас есть магазин с 100 000 элементами и вы каждый день добавляете по 1 элементу (товару). Следовательно, каждый день все файлы кеша всех 100 000 товаров маркируются на удаление (конечно, если они успели создаться за день). Ок, а если эти элементы создают сами пользователи и создают круглосуточно - получается в битриксе кеша нет т.к. при каждом удалении/изменении/добавлении 1 элемента трётся весь кеш всех элементов инфоблока.

Я обнаружил это свойство "управляемого кеша" когда нашёл большое количество файлов кеша в очереди на удаление (файлы с именем ".~" ) в папках
bitrix/cache/s1/bitrix/news.detail
bitrix/cache/s1/bitrix/news.list
Агенты на кроне (раз в минуту) не справлялись с удалением десятков тысяч файлов в очереди - проверьте может у вас тоже это заметно. Представляете какая нагрузка на файловую систему!?

Люди, скажите, только у меня одного такой резонанс случается, когда вижу как битрикс помечает на удаление десятки тысяч файлов валидного кеша!?

Как исправить

Мне кажется, "управляемый кеш" должен работать так:
При добавлении элемента должен создавать файл кеша (точнее при первом его вызове из компонента).
При изменении элемента должен маркироваться на удаление файл кеша ИЗМЕНЯЕМОГО элемента и далее при первом вызове из компонента будет создаваться новый файл кеша этого элемента.
При удалении элемента должен маркироваться на удаление только файл кеша УДАЛЯЕМОГО элемента.

Не должны ни в коем случае удаляться все файлы кеша всех элементов инфоблока. Я не могу представить себе ситуацию когда надо удалять ВСЕ валидные файлы кеша при добавлении/изменении/удалении ОДНОГО единственного элемента!

Рейтинг: 0  
Пользователь 158956 16.02.2016 18:41:09
Или всё-таки есть потребность удалять ВСЕ файлы кеша ВСЕХ элементов инфоблока при изменении/добавлении/удалении одного единственного элемента?
Рейтинг: 0  
Пользователь 158956 16.02.2016 18:47:40
После отключения "управляемого кеша" мой самый нагруженный проект начал работать в 1.5 раз быстрее. Поэтому и написал предложение пересмотреть логику работы "управляемого кеша".
Рейтинг: 0  
Пользователь 21984 16.02.2016 18:48:36
Может вам вот это подкинуть почитать: http://dev.1c-bitrix.ru/community/blogs/oracle/2071.php
Рейтинг: 0  
Пользователь 158956 16.02.2016 19:07:39
Может вам вот это подкинуть почитать: http://dev.1c-bitrix.ru/community/blogs/oracle/2071.php
Это входит в функционал продукта "из коробки" О_о ? Неделю назад свежую версию "старт" ставил - там в dbconn нет BX_COMP_MANAGED_CACHE
Рейтинг: 8.1058  
Пользователь 11948 17.02.2016 04:01:20
Это входит в функционал продукта "из коробки" О_о ? Неделю назад свежую версию "старт" ставил - там в dbconn нет BX_COMP_MANAGED_CACHE
Ну есть еще гора констант, которых нет в дбконн :)  Так что Юрий прав - в сложных каталогах вам надо писать свою систему сброса кеша. Текущая схема подходит для большинства, но не для всех.
Рейтинг: 0  
Пользователь 21984 17.02.2016 11:32:37
Спасибо Антон, вы на 100% точно поняли мою мысль!
Рейтинг: 0  
Пользователь 114664 17.02.2016 11:37:25
BX_COMP_MANAGED_CACHE - можно вынести это в настройки в главного модуля.

Сбрасывать весь кеш или сбрасывать по страницам....
Рейтинг: 0  
Пользователь 124690 21.04.2016 11:48:31
Вот это да!!! Не знал что работа кеша настолько кривая...