Дата последнего изменения: 16.02.2023
Дублирование — одна из самых явных проблем, которая может привести к следующим последствиям:
Хорошим примером проблемы дублирования является решение С 1 февраля 2023 года продажа данного решения прекращена. «Официальный сайт государственной организации», версия от 03.08.2010. Это решение включает себя 8 различных видов сайта, частично отличающихся как своей структурой, так и набором демо-данных. А также четыре шаблона дизайна, которые можно использовать для любого вида сайта.
Отбросим файлы самой редакции платформы Bitrix Framework и оставим для анализа только модуль gossite и мастер установки bitrix:government. Вместе они имеют размер 274 МБ и состоят из 13 867 файлов и 7 940 каталогов. Эти цифры не назовешь маленькими.
Рассмотрим основные случаи дублирования в этом решении:
/public
мастера установки bitrix:government можно увидеть папку /bitrix
, содержащую набор компонентов и гаджетов. Сравнив список компонентов, мы увидим те же самые названия, и дополнительный компонент structure.visual. Все они копируются на этапе установки сервисов в скрипте /wizards/bitrix/government/site/services/files/bitrix.php
следующим кодом:
CopyDirFiles( WIZARD_ABSOLUTE_PATH."/site/public/".LANGUAGE_ID."/bitrix/", WIZARD_SITE_PATH."/bitrix/", $rewrite = false, $recursive = true );Исходя из кода, копирование проводится без перезаписи, поэтому актуальными являются компоненты, устанавливаемые вместе с модулем.
/common
для общих файлов, а также папки для каждого из типов сайта. По логике установки сервисов первым копируется содержимое папки выбранного вида сайта, а потом поверх него содержимое папки с общими файлами.
При беглом осмотре можно заметить, что каталог /video
(15,7 МБ) из общих файлов дублируется также в четырех видах сайта, причем видеофайлы идентичны. А содержимое папки /upload
из общих файлов частично дублируется для сайта прокуратуры.
В папке /upload/
сайта прокуратуры присутствует каталог /iblock
, дублирующий файлы для установки инфоблоков.
/common
.Решением этой проблемы стало объединение общих инфоблоков в один каталог. При каких-либо отличиях в настройках или содержании инфоблоков для каждого типа сайта сохранялся свой xml файл с добавлением префикса по типу сайта, но все они использовали уже общий набор дополнительных файлов. Выбор что устанавливать стал проводиться в скрипте установки инфоблока.
Над последней версией дистрибутива решения были проведены работы по устранению указанных выше проблем. В конечном итоге после замены двух шаблонов дизайна новыми, дополнения демо-данных и прочих плановых доработок, совокупный размер мастера и модуля уменьшился до 141 МБ, а количество файлов и каталогов уменьшились до 8 889 и 4 588 соответственно.
/bitrix/wizards/
. Это позволит избежать либо дублирования, либо дополнительного копирования мастера при установке решения.