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

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

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

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


Затем обнаружил, что папка bitrix/cache/css не очистилась, так же папка upload имеет значительный размер. какие есть предложения? спасибо.
  • Вопрос задан
  • 11195 просмотров
Подписаться 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, потому удалит что угодно.
Ответ написан
Чаще всего кеш разрастается до невероятных размеров из за неправильно настроенного кеша меню.
Из документации:
  • 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. Где то стоит его включить, а где то нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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