Дата последнего изменения: 09.06.2021
Вопрос: Почему допускается хранение контента в файловой системе, пусть даже статичного? Не место ли контенту в базе данных? Вадим Думбравану: так удобнее, причем как разрабатывать, так и управлять. |
Bitrix Framework реализован на файлах, что дает больше свободы разработчику сайта. Поскольку файл в системе - это просто исполняемый файл, то и исполнять он может что угодно: хоть собственный PHP-код программиста, хоть стандартные компоненты - в любом порядке. Как ни странно, эта полная свобода может напугать начинающего разработчика, но с опытом это проходит.
Файлы можно править как по FTP, так и в SSH, не прибегая к дополнительным инструментам СУБД. Их легко копировать, перемещать, делать резервные копии и т.п. Строго говоря, вы можете весь контент хранить в БД. Но для простых статичных сайтов это будет явное усложнение и замедление.
Реализация на файлах кажется проблематичной в том плане, что от такой системы ожидается десятки тысяч файлов на диске. Обычно это не так. Динамическая информация (новости, каталог товаров, статьи) сохраняются в БД модулем Информационные блоки. Тогда для вывода, например, десятка тысяч товаров в интернет-магазине используется одна единственная физическая страница (файл). В этом файле вызывается компонент инфоблоков, который в свою очередь выбирает и выводит товары из базы данных.
Например, для каталога товаров действительно нужно создать папку на диске, но только одну, например, /catalog
, поместить туда комплексный компонент и далее страницы товаров могут иметь вид, например: http://***.ru/catalog/1029.html
Естественно, что эти адреса будут "мнимыми" и обрабатываться системой. Файлов под них в папке /catalog
не создается.
Однако, для каждого товара будет создан файл в кэше, чтобы, при следующем обращении покупателя сервер не напрягался с запросами к БД. Это и позволяет запускать магазины уровня Эльдорадо.
При должном умении публичная часть может состоять из десятка физических файлов. Весь контент может быть в инфоблоках, включая меню. Но обычно статические страницы (например, О компании) удобнее редактировать как файл, а не как запись БД. Но если таких статических страниц становится неограниченно много, то это повод, чтобы структурировать их и разместить не на диске, а в инфоблоках.
Размер системы довольно большой, так как в её состав включено множество компонентов необходимых для быстрого старта и работы административной части. Компоненты не консолидированы, потому что система модульная. Модули, компоненты и шаблоны имеют определенную структуру. Это важно и для обновлений системы и для разработки своих компонентов.
Большое количество файлов - свойство аналогичных систем. (У ZendFramework есть такая же особенность). При правильной конфигурации хостинга эту проблему возьмут на себя прекомпиляторы php. Критичным может оказаться размер выделяемого хостером места и большое число файлов системы. (Проблемой становится не штатная работа Bitrix Framework, а, например, работа систем бэкапов у хостеров. На большом количестве файлов они начинают себя чувствовать не очень хорошо.) Поэтому для выбора хостера рекомендуем пользоваться списком рекомендуемых хостингов.
Структура сайта также может быть и в БД (инфоблоки), но управлять иерархией в реляционной БД не очень-то удобно.
Рассмотрим использование файлов в Bitrix Framework на примерах:
Файловая структура Bitrix Framework организована таким образом, что программные компоненты ядра продукта были отделены от пользовательских файлов, а также файлов, определяющих внешнее представление сайта. Данная особенность позволяет:
Вся система целиком лежит в каталоге /bitrix/
, в него входят следующие подкаталоги и файлы:
/admin/
- административные скрипты;/cache/
- файлы кэша;/activities/
- папки действий для бизнес-процессов;/components/
- папка для системных и пользовательских компонентов;/gadgets/
- папки гаджетов;/js/
- файлы javascript модулей;/stack_cache/
- файлы кеша "с вытеснением";/themes/
- темы административного раздела;/wizards/
- папки мастеров;/images/
- изображения используемые как системой в целом, так и отдельными модулями;/managed_cache/
- управляемый кеш;/modules/
- каталог с модулями системы, каждый подкаталог которого имеет свою строго определённую структуру;/php_interface/
- вспомогательный служебный каталог, в него входят следующие каталоги и файлы:
/bitrix/.settings.php
;
SITE_ID
;
/templates/
- каталог с шаблонами сайтов и компонентов , в него входят следующие подкаталоги:
/.default/
- подкаталог с общими файлами, используемыми тем или иным шаблоном по умолчанию, структура данного каталога аналогична нижеописанной структуре каталога содержащего конкретный шаблон;
/ID шаблона сайта/
- подкаталог с шаблоном сайта, в него входят следующие подкаталоги и файлы:
/components/
- каталог с кастомизированными шаблонами компонентов;
/lang/
- языковые файлы принадлежащие как данному шаблону в целом, так и отдельным компонентам;
/images/
- каталог с изображениями данного шаблона;
/page_templates/
- каталог с шаблонами страниц и их описанием хранящимся в файле .content.php. Когда пользователь создает новую страницу, он может выбрать, по какому шаблону из представленных в этом каталоге это будет сделано;
/tools/
- при инсталляции в этот каталог копируются дополнительные страницы, которые могут быть непосредственно использованы на любых страницах сайта: помощь, календарь, показ изображения и т.п.;
/updates/
- каталог, автоматически создаваемый системой обновлений;
В зависимости от используемой редакции некоторые каталоги и файлы могут отсутствовать.