Скачайте приложение и протестируйте бесплатно в течение 10 дней
Валюта Выберите язык Выбрать регион

Так работает процесс рендеринга сайта в системе 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, страница не находится в режиме редактирования, и кэширование для этой страницы было активировано.

CMS