Так работает процесс рендеринга сайта в системе bluetronix CMS
При каждом запросе страницы система bluetronix CMS проходит через несколько этапов обработки. В этом учебном пособии вы узнаете о полном процессе рендеринга и о том, когда проводятся проверки безопасности, исполняются PHP-скрипты, заменяются переменные макета и создаются готовые HTML-страницы.
1. Загружаем скрипты безопасности
В начале bluetronix CMS загружает скрипты, относящиеся к безопасности. В их число входят Secure Check, проверка числа вызовов, подготовка или проверка параметров MySQL, а также анализ GET- и POST-параметров.
Проверки, которые не требуют соединения с базой данных, уже выполняются на данном этапе.
2. Загружаем конфигурацию модуля
Если файл существует, загружается /bx_Mod/config_own.php. Скрипты и переменные конфигурации, определенные в нем, уже доступны в начале процесса рендеринга.
3. Запустить сессию
CMS запускает PHP-сессию с помощью @session_start();. При этом важны три переменные сессии: $_SESSION["S_User"] для пользователя CMS или режима редактирования, $_SESSION["S_Language"] для текущего языка и $_SESSION["Web_User"] для пользователя входа на фронтенде.
4. Загрузить параметры страницы
Затем CMS считывает информацию о текущем вызове из серверных переменных. $domain получает имя домена из $_SERVER["SERVER_NAME"], $FileParameter — путь запроса, включая GET-параметры, из $_SERVER["REQUEST_URI"], а $file — выполняемый файл из $_SERVER["PHP_SELF"].
$ReferURL содержит значение $_SERVER["HTTP_REFERER"], если оно было передано. Например, это может использоваться при подгрузке фреймов или областей страниц.
5. Установить соединение с базой данных
CMS автоматически устанавливает соединение с базой данных. После этого таблицы базы данных CMS становятся доступными для дальнейших проверок и загрузки содержимого страниц.
6. Повторно проверить GET- и POST-параметры
После установления соединения с базой данных CMS вызывает SECUREGetPost();. Переданные параметры GET и POST подлежат повторной проверке и при необходимости корректировке. Теперь также возможны проверки, требующие информации из базы данных.
7. Перенаправления домена, редактирования и языка
В зависимости от конфигурации CMS, вызванного домена, режима редактирования, выбранного языка и параметров вызова может произойти перенаправление. Возможные цели: главный домен, домен редактирования, а также языковые домены или URL.
8. Перенаправление на HTTPS
Если веб-сайт был вызван без HTTPS, происходит перенаправление на версию страницы SSL или HTTPS.
9. Загрузить центральные PHP-скрипты
Теперь CMS загружает свои центральные функции PHP. К ним относятся, например, BlueSMTPMail() для отправки почты и BlueFormSend() для обработки форм. Также подключаются другие центральные функции.
10. Загрузить данные страницы из 00_site
Данные запрашиваемой страницы извлекаются из таблицы базы данных 00_site. При этом определяются такие переменные CMS, как $Template.
Кроме того, инициализируются $LayoutHTML и $SitePHP. $LayoutHTML позже содержит полный HTML-макет, а $SitePHP содержит PHP-код, который непосредственно относится к запрашиваемой странице.
11. Загрузить макет из 00_layout
Связанный с страницей макет загружается из таблицы базы данных 00_layout и служит основой для дальнейшей обработки в $LayoutHTML.
12. Установить зависимости JavaScript для языка
Если существуют файлы, специфичные для языка, CMS может заменить стандартные файлы BxScript.js и BxHeadScript.js подходящими языковыми вариантами, например, BxScript_de.js или BxScript_en.js.
При этом метки файлов __FV_/bx_script/BxScript_own_min.js__ и __FV_/bx_script/BxHeadScript_own_min.js__ в макете корректируются.
13. Сформировать заголовок и динамическое содержимое
Теперь создаются динамические содержимого и выполняются специфические для страницы PHP-скрипты. DynMenue() генерирует динамические меню, IncludeModul() подключает настроенные модули, а EditMARK() устанавливает маркеры редактирования CMS.
С помощью eval($SitePHP) выполняется PHP-код текущей страницы; eval($IncludePHP) выполняет подключенные PHP-скрипты.
14. Установить параметры изменений для CSS и JavaScript
Для CSS- и JavaScript-файлов устанавливается параметр изменения. Таким образом, браузер может загрузить новую версию обновленных файлов, а не устаревший файл из своего кэша.
Например, вызов из ссылки на файл, такой как /css/style.css, может выглядеть так: /css/style.css?v2026....
15. Установить темный или светлый режим
CMS считывает настроенный режим отображения из /bx_style/BxSource/CSSEditDarkLight.bx. В зависимости от содержимого файла устанавливается темный или светлый режим в макете.
16. Установить переменные конфигурации модуля в макете
Конфигурация модуля из /bx_Mod/config_own.php применяется к макету. Если, например, модуль магазина, поиска, входа или перевода отключен, соответствующие элементы управления могут автоматически скрываться.
Для этого метки макета, такие как __DB_GB_DesktopIconBasket_Display__, __DB_GB_DesktopIconSearch_Display__, __DB_GB_DesktopIconLogin_Display__ или __DB_GB_DesktopIconLang_Display__, заменяются на none.
17. Удалить оставшиеся заменяющие марки
Незаполненные заполнители CMS удаляются из готового HTML. Это касается, среди прочего, меток по шаблонам __DB_...__ и __ST_...__, а также всех предусмотренных внутренних меток комментариев xxx.
18. Удалить HTML-комментарии
CMS затем удаляет HTML-комментарии из $LayoutHTML. Это предотвращает передачу лишнего текста комментариев в браузер.
19. Выполнить перевод на язык
Если $_SESSION["S_Language"] не равно $GBMainLang, отмеченные тексты переводятся на текущий используемый язык. Переводы берутся из таблицы базы данных Translation.
Если нужного текста там еще нет, создается новая запись в Translation. CMS определяет переводимые содержимое по меткам My Text и My Text.
20. Заменить вызовы изображений через IMG.pl
Вызовы изображений и обрезки изображений через IMG.pl заменяются ранее созданными или оптимизированными файлами изображений. Готовая HTML-страница может напрямую ссылаться на эти вариации изображений.
21. Вывести готовую страницу
По завершении обработки $LayoutHTML выводится в браузер с типом содержимого text/html; charset=utf-8, например, через print $LayoutHTML;.
Для неактивированных или внутренних доменов вывод помечен как noindex, nofollow, чтобы эти страницы не индексировались поисковыми системами.
22. Записать кэш
После вывода страницы CMS может сохранить готовую страницу в кэше. Условие – никто не должен быть зарегистрирован как S_User, страница не должна находиться в режиме редактирования, и кэширование для этой страницы должно быть активировано.
При последующих вызовах может использоваться сохраненная HTML-страница, без повторного выполнения полного процесса рендеринга.
Часто задаваемые вопросы
что часто спрашивают клиенты
Что такое процесс рендеринга сайта?
Под этим термином учебник обозначает шаги обработки, с помощью которых CMS bluetronix генерирует готовую HTML-страницу из данных страницы и макета и выводит её в браузер.
Какие проверки безопасности выполняются перед подключением к базе данных?
Перед подключением к базе данных выполняются, среди прочего, Secure Check, проверка количества вызовов, подготовка параметров MySQL и анализ параметров GET и POST.
Когда загружается конфигурация модуля?
Файл /bx_Mod/config_own.php загружается, если он существует, уже перед началом сессии и перед установлением подключения к базе данных.
Для чего используются S_User, S_Language и Web_User?
S_User обозначает пользователя CMS или режим редактирования, S_Language – текущий язык веб-сайта, а Web_User – пользователя фронтенд-логина.
Из каких таблиц базы данных берутся страница и макет?
Данные страницы загружаются из 00_site. Соответствующий макет читается из 00_layout и обрабатывается в $LayoutHTML.
Когда выполняется PHP-код страницы?
При генерации заголовка и динамического контента код страницы выполняется через eval($SitePHP), а включенный PHP-код через eval($IncludePHP).
Когда используются языковые JavaScript-файлы?
Если доступны подходящие языковые варианты, BxScript.js и BxHeadScript.js могут быть заменены соответствующими языковыми файлами.
Как определяется темный или светлый режим?
CMS читает файл /bx_style/BxSource/CSSEditDarkLight.bx и устанавливает режим отображения на основе его содержимого.
Когда тексты переводятся автоматически?
Если текущий язык отличается от $GBMainLang, соответствующие помеченные тексты переводятся на основе записей в таблице Translation.
При каких условиях готовая страница кэшируется?
Кэш может быть записан, если никто не зарегистрирован как S_User, страница не находится в режиме редактирования, и кэширование для этой страницы было активировано.