Хранение, кеширование и обслуживание

Данные модуля

ХранилищеСодержимое
ContentItemsОпределения областей: код, тип и служебные сведения
ContentValuesЗначения по области, языку и сайту
kokhanenko_hl_metadataSEO/OpenGraph-профили HL и элементов
Собственные HL сайтаЗаписи проекта, не принадлежащие модулю

У значений Content уникально сочетание области, языка и сайта. Код области также защищён уникальным ключом. Схема не должна исправляться усечением кодов или удалением конфликтующих записей. Для сравнения кодов учитываются правила базы данных, поэтому не рассчитывайте на создание разных областей только за счёт регистра.

В таблице метаданных ELEMENT_ID=0 означает общий профиль HL, положительный ID — профиль записи. Ревизия защищает от сохранения устаревшей формы. Это не журнал версий и не пользовательская история восстановления.

Кеш компонентов

hlblock.list и hlblock.detail используют штатный кеш компонентов. Значение по умолчанию — 3600 секунд; CACHE_TYPE=N отключает кеш, явный CACHE_TIME=0 не заменяется значением по умолчанию.

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

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

Query API сам по себе не является отдельным постоянным кешем результатов. Если вы используете его вне компонентов, организуйте кеширование на уровне вызывающего сценария и учитывайте dependencyHlBlockIds из result().

Кеш областей

Читатель областей запоминает результаты внутри запроса с учётом языка и сайта. Запись сбрасывает соответствующие теги и локально запомненные значения. Отсутствующее определение не должно оставаться в кеше после создания.

Композитный режим

Кеш компонента и готовая HTML-копия страницы — разные слои. Сброс данных компонента не означает мгновенной перезаписи всех статических HTML-копий.

SEO/OpenGraph поддерживают вывод в обычный и статический HTML; обновление композитной копии выполняется штатным механизмом Битрикса. Если изменение должно появиться немедленно, используйте штатную очистку соответствующих страниц и проверьте их под гостем. Пользовательский шаблон должен корректно объявлять совместимость с композитом.

Изменение данных вне интерфейса

Используйте ORM и предусмотренные события. Прямой SQL может обойти обновление дат, генерацию кода и сброс кеша. При внешнем импорте отдельно проверьте целостность кодов, события и актуальность публичной страницы.

Не удаляйте вручную общие каталоги /local/js/kokhanenko и /local/tools/kokhanenko: в них могут находиться другие решения. Установщик управляет конкретными ресурсами своего модуля.

Обновления и резервные копии

Перед заменой файлов или изменением схемы сохраняйте согласованные копии БД и файлов. В исходниках есть адресные инструменты для разработки, но они не являются универсальным механизмом обновления версии Marketplace. Выполняйте только процедуру, приложенную к конкретному релизу.

Восстановление базы без соответствующих файлов может вернуть несовместимую схему. Проверяйте восстановление на копии сайта. Для удаления модуля используйте отдельную инструкцию.