Битрикс где хранится кэш

Обновлено: 03.07.2024

Причин переполнения кеша может быть несколько, не правильно настроены права доступа к папкам в которох хранятся файлы кеша, не правильно настроены компоненты генерирующие кеш, не работающие агенты, сломанный планировщик cron.

Проверка доступов

Первым делом стоит проверить папки где хранится кеш, а именно:

  • /bitrix/cache/
  • /bitrix/stack_cache/
  • /bitrix/html_cache/

Проверку можно осуществить вручную, либо при помощи встроенных инструментов. Для этого в административной панели сайта перейдите в раздел Настройки -> Инструменты -> Проверка системы, вам нужна вкладка «Проверка доступа», запустите полную проверку, если система не сможет получить доступ к ключевым разделам, в отчёте появятся адреса файлов и папок доступ к которым необходимо изменить.

Если система по какой-то причине не может выполнить тест, такую проверку можно осуществить вручную при помощи FTP менеджера. Права на файлы должны быть 0644, на папки 0755.

Проверка настройки компонентов

Ещё одной распространённой проблемой, является не верно настроенное кеширование компонентов. Рекомендуемый тип кеширование «Авто + управляемое», рекомендуемое время кеширования от 10 до 40 часов. Некоторые программисты могут просто напечатать несколько лишних нулей в параметрах кеширования. В моей практике был случай когда коллеги ошиблись и указали кеш в 36 миллионов секунд, а это

14 месяцев. Естественно кеш за это время скопился просто гигантский, порядка 100 гигабайт.

Если файлов кеша скопилось много, а по какой-то причине не удаётся снести их все, можно написать небольшую функцию агента, запускать её раз в 30 минут/1 час и она вычистит весь кеш в течении недели, при этом не создавая большой нагрузки на сайт. Естественно перед этим нужно корректно настроить время кеширования в компонентах.

Функцию необходимо добавить в файл init.php, а так же создать агента в списке агентов. Рекомендуется так же перевести работу агентов на cron.

Для удобства контроля размера папок с кешем можно использовать следующие SSH компанды:

Проверка файлов result_modifier.php

Некоторые программисты только начинающие работать с 1С Битрикс, иногда в файле result_modifier.php вытаскивают их БД огромное количество информации, которая в последствии нигде не используется. В битриксе есть такой метод как SetResultCacheKeys() который позволяет кешировать только то, что необходимо.

Следует проверить все файлы result_modifier.php компонентов используемых на сайте на наличие этого метода, если его нет, нужно детально проанализировать код, чтобы понять что в конечном итоге попадает в кеш компонента, если там есть что-то лишнее (данные которые не используются в шаблоне и файле component_epilog.php) — необходимо оптимизировать код. Общий вид кода при использовании SetResultCacheKeys() выглядит так:

Заключение

Самый лучший способ не сталкиваться с проблемой с кешем — профилактика и тестирование проекта при сдаче. Для этого в 1С Битрикс есть встроенные средства проверки качества + ваши прямые руки. Желаю удачи!

Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .

Курс для разработчиков - продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы - в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки - в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы - в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск - в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
      - модули "1С-Битрикс: Управление сайтом" - модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. - модули "1С-Битрикс: Корпоративный портал"

    Как построен курс

    Общепринятая градация квалификации разработчиков в рамках курса обозначает что:

    • Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
    • Middle разработчик может работать с API Bitrix Framework.
    • Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
    Примечание: Такое построение удобно для пошагового изучения принципов работы Bitrix Framework. По этому же принципу построены и тесты. Но такая структура не очень удобна для использования содержания курса как постоянного источника информации. Что бы переключить курс в режим Справочника, воспользуйтесь переключателем в верхнем правом углу шапки курса.

    Начальные требования к подготовке

    Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

    • основами PHP, баз данных;
    • основами HTML, CSS.

    У нас часто спрашивают, сколько нужно заплатить

    Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.

    Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

    Баллы опыта

    В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
    окно подтверждения:


    уроке.

    Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

    Тесты

    После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

    Комментарии к статьям

    Что дальше?

    Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:

    Для преподавания оффлайн

    Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

    Если нет интернета

    iPhone:
    FBReader
    CoolReader
    iBook
    Bookmate

    Windows:
    Calibre
    FBReader
    Icecream Ebook Reader
    Плагины для браузеров:
    EpuBReader – для Firefox
    Readium – для Google Chrome

    iOS
    Marvin for iOS
    ShortBook
    обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.

    Кеш - это специальное хранилище, в котором сохраняются результаты работы редко обновляемых или ресурсоёмких кусков кода.

    Управление размещением кеша можно через константы в файлах /bitrix/php_interface/dbconn.php и /bitrix/.settings.php. В dbconn.php используется константа BX_CACHE_TYPE, которая может принимать значения:

    • files – размещать кеш на жёстком диске. Используется по умолчанию;
    • memcache, apc, xcahe – соответствующая внешняя система кеширования. Прежде чем её выбрать, следует удостовериться, что она установлена на сервере, иначе будет использоваться файловая система.

    КАК РАБОТАЕТ КЕШ В BITRIX

    В Битриксе существует несколько вариантов кеширования

    1. Неуправляемое кеширование – Результат работы сохраняется в виде файла и возвращается до тех пор, пока не истечёт его время жизни, после чего он будет перестроен. Неуправляемым этот тип кеширования называется потому, что перестраиается только после истечения своего времени жизни.
    2. Управляемое кеширование – в отличие от неуправляемого кеширования обновляется при обновляется при изменении исходных данных компонента.
    3. Автокеширование Вариант управляемого кеширования для компонентов. Каждый компонент заводит собственный кеш и управляет им. Такое кеширование может быть отключено для всех компонентов из админки.
    4. Кеширование меню – Вариант управляемого кеша, созданный специально для меню.
    5. HTML кеширование – устаревший тип кеширования, заменённый композитным сайтом.

    ИСПОЛЬЗОВАНИЕ КОМПОЗИТНОГО САЙТА

    Композитный сайт - один из видов кеширования в Битрикс. Основная идея заключается в том, чтобы разделить сайт на две части — статическую и динамическую. Статическая часть кешируется и сразу отдаётся клиенту при запросе, после чего, через AJAX-запросы, запрашиваются динамические части страницы. Благодаря этому кажется, что страница загрузилась быстрее. Композитный сайт можно запустить в разделе Настройки > Настройки продукта > Композитный сайт в режиме Автокомпозит, либо Композит.

    При режиме автокомпозит, битрикс автоматически производит настройки компонентов автоматически. Для сложных сайтов можно выбрать режим Композит, однако настраивать компоненты придётся вручную.

    После включения рекомендуется несколько раз пройтись по страницам сайта в режиме «Инкогнито», чтобы создать кеш для страниц. При этом можно заметить, что на страницах появляется кнопка «Быстро с 1С-Битрикс». Настроить её вид, или отключить полностью можно на вкладке Кнопка "Быстро с 1С-Битрикс" в разделе Настройки > Настройки продукта > Композитный сайт. Следует помнить, что для того чтобы сайт отобразил эти изменения на страницах, придётся сбросить их кеш.

    При настройке композитного сайта можно увидеть параметр - Голосование за композитный режим. Смысл его в следующем — компоненты страницы голосуют за включение композитного режима на странице. Режим включится, если большинство компонентов проголосует «За».

    Параметр «Содержимое компонента» указывает, будет ли содержимое статическим, или подгружаться через AJAX, и если да, то в каком виде.

    Кеш имеет определенный период жизни и какой-то идентификатор — нечто, что уникально идентифицирует именно эту совокупность данных. Пока период жизни кеша не истек — нужно обращаться к кешу, а после истечения срока жизни кеша нужно снова получить данные из БД и сохранить на указанный период.

    Суть управляемого кеша в том, чтобы пометить какой-то кеш какой-то меткой и иметь возможность по тегу управлять этим кешем (в основном для очистки). Т.е. помимо идентификатора, кеш может быть идентифицирован и по тегу. Один и тот же кеш может иметь разные теги, а один и тот же тег может быть назначен разным кешам. Таким образом, имея какой-то тег, можно почистить все кеши, связанные с данным тегом.

    Работа с управляемым кешем состоит из 3-х операций:

    • Cвязь объекта кеша с директорией хранения кеша
    • Задание одного или нескольких тегов
    • Очистка кеша по тегу

    Для начала нужно включить механизм управляемого кеширования. Определяем в dbconn.php константу:

    И проверим, что механизм теперь работает:

    За работу кеша отвечает глобальный объект $CACHE_MANAGER , который является экземпляром класса CCacheManager :

    Выводим полученные данные:

    Файл кеша bitrix/cache/content/articles/7c/7cb8ee7684eef61a2bf9e6abb07aca9a.php :

    В результате работы приведенного выше кода мы закешируем выборку элементов инфоблока. Сформированный кеш будет находиться в директории bitrix/cache/content/articles , и этот кеш будет помечен тегами iblock_id_5 и iblock_code_articles , а также набором тегов, зависящих от идентификатора элемента, т.е. article_id_347 , article_id_348 , article_id_349 .

    Осталось прикрутить возможность очистки данного кеша. В нашем примере кеш устаревает сразу же при изменении любого элемента инфоблока. Соответственно, при изменении, удалении или добавлении какого-либо элемента нам нужно кеш очищать. Для этого создадим обработчики для этих событий и будем очищать кеш по любому из ранее заданных тегов:

    Привязка тега кеша к директории кеша хранится в таблице b_cache_tag базы данных. После создания кеша в ней будут такие записи:

    Если мы зайдем теперь в панель управления и отредактируем (создадим, удалим) элемент инфоблока, директория хранения кеша будет переименована:

    А в таблице таблице b_cache_tag теперь будут записи:

    В файле лога __bx_log.log появятся записи:

    Кеширование в нативных компонентах, использующих инфоблоки

    Управляемый кеш обеспечивает обновление кеша нативных компонентов Битрикс, использующих инфоблоки. Реализация крайне проста — в ядре, внутри методов CIBlockResult::Fetch() и CIBlockResult::GetNext() (для элементов и разделов) спрятана регистрация тега вида

    Соответственно, даже если компонент закеширован на год, то при обновлении элементов или разделов — кеш будет сброшен, и на сайте будут всегда актуальные данные.

    Читайте также: