Задать вопрос

Как автоматизировать очистку кэша битрикс?

Доброго времени суток. Разрастается папка bitrix/cache/. Первым делом очистил вручну кэш в админке.

Далее, как написано в документации, прописал в файле /bitrix/php_interface/dbconn.php следующие строки:
umask(000);
@umask(~BX_DIR_PERMISSIONS);


Затем обнаружил, что папка bitrix/cache/css не очистилась, так же папка upload имеет значительный размер. какие есть предложения? спасибо.
  • Вопрос задан
  • 11114 просмотров
Подписаться 5 Средний 1 комментарий
Решения вопроса 3
gromdron
@gromdron
Работаю с Bitrix24
Увы, очищать папку через cron не лучшая идея. По факту Вы боретесь не с проблемой, а с симптомом.
Почему разрастается папка кеша?
1) У Вас очень большой и сложный сайт.
Например при 10 тысячах товаров в одной категории, если Вы будете пытаться кешировать каждую страницу, то размер будет большой. Предположим на страницу с 10 товарами уходит 10КБ кеша (на самом деле, все зависит от верстки и может достигать и бОльшего размера), тогда общий кеш каталога будет 10КБ * 10 000 = ~100МБ (учетных, на самом деле около 90МБ).
Теперь посчитаем, что может быть 2 вида отображения: списком или плиткой. Соответственно уже 180МБ. А если товаров не 10 тысяч, а 100 ? А если есть еще и фильтр и его результаты могут быть кешированы? И это мы посчитали только каталог и довольно малый размер кеша.

Решение: подобрать время кеширования и увеличить дисковое пространство

2) Неправильно определено время кеширования.
Например: у Вас ttl кеша стоит 3 месяца. И даже если за 3 месяца на него никто не зашел, он все-равно хранится. Например у Вас очень объемный кеш (что очень плохо), который занимае 500КБ (а иной раз и 1 МБ), получается что этот 1МБ будет хранится на протяжении длительного времени, даже если к нему нет обращения.

Решение: подобрать время кеширования (возможно где-то стоит уменьшить) и параметры компонентов (возможно что-то не стоит кешировать)

3) Неправильно настроен кеш собственных или битриксовых компонентов.
Например есть очень большой пунктик в битриксе с кешем меню - если указать MENU_CACHE_VARS (вроде так пишется, по памяти писал), то он будет под каждый набор параметров создавать кеш. И тогда кеш меню начинает сильно пухнуть и еще и кешироваться на длительное время.

Решение: нужно проверить параметры кеширования в компонентах. Возможно в своих компонентах переписать или посмотреть на основании чего он формируется

4) Ошибка с механизмом очищения кеша.
Например, когда кеш не успевает удаляться, и накапливается. Таким образом происходит дублирование одного и того же кеша в разных компонентах.
Ответ написан
Комментировать
AlexMaxTM
@AlexMaxTM
Очищайте кроном, это куда надежнее. Крон работает под su, потому удалит что угодно.
Ответ написан
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Чаще всего кеш разрастается до невероятных размеров из за неправильно настроенного кеша меню.
Из документации:
  • MENU_CACHE_USE_GROUPS - При кешировании будут учитываться права доступа пользователя к тем или иным пунктам меню. Если меню построено без учета прав доступа, флажок лучше снять - размер кеша уменьшится.
  • MENU_CACHE_GET_VARS - Если отображение меню зависит от параметров страницы, то при использовании кеширования необходимо указать параметры в этом поле. Параметры вводятся через запятую.
  • CACHE_SELECTED_ITEMS - Y\N. Определяет подмешивать или нет URL в кеш. По умолчанию меню кешируется отдельно для каждого раздела. Если на сайте много разделов, то размер кеша меню может вызвать падение сайта из-за переполнения места на диске. Ограничение константы отключающей подмешивание URL в том, что во сложенном разделе может полностью быть переопределены пункты меню.
  • MENU_CACHE_USE_USERS - Y\N. Определяет подмешивать ли в кеш id пользователя.То есть делать ли его уникальным для каждого пользователя. Нужно когда оно отличается для каждого пользователя.


Еще стоит обратить внимание на параметр CACHE_FILTER в компонентах catalog.section, news.list. Этот параметр отвечает за кеширование результатов работы этих компонентов, когда передан фильтр через FILTER_NAME. Где то стоит его включить, а где то нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы