Опис
Web-система відрізняється відносно простою та наочною реалізацією — практично всі дані представлені об'єктами — перерахованими в таблиці бази даних, ієрархія об'єктів наочно представлена в "адмінці". Докладніше
Виконання веб-запиту: кроки
Браузер Вашого пристрою (клієнт) виконує запит до цікавого для Вас ресурсу (серверу) в мережі Інтернет. за текстом (адресою) у пошуковому рядку браузера або в атрибуті (HREF) посилання. Цей текст називається "Uniform Resource Locator" — коротко "URL".
Абсолютний (повний) URL містить ім'я протоколу передачі даних (наприклад: "https").
Після двокрапки і двох слешів ("://") — доменне ім'я (наприклад: "google.com").
Потім після слеша може бути шлях до файлу або ім'я сторінки сайту: "friendly URL"— "людино-зрозумілий урл" (далі — "Url").
Потім може бути знак питання — для вказівки потім параметрів запиту.
URL може бути відносним — всередині домену: без зазначення протоколу та домену — містити лише текст після домену.
Браузер при розборі запитаної сторінки сайту виконує запити і до її частин: картинок, файлам — що використовуються…
Також запити до сайту виконують і пошукові системи: до "robots.txt" — де вказується інформація для них (адреса картки сайту, які папки сайту не відвідувати…), до карти сайту (зазвичай — "sitemap.xml") і до сторінок, вказаних у карті сайту. Також пошукові системи можуть вимагати й інші ресурси сайту — зазначеним у відвіданих ними сторінках або до яких був пошуковий запит.
Веб-сервер, який містить запитаний ресурс:
- або повертає вміст файлу — якщо існує і доступний, наприклад — HTML, картинка, стиль, скрипт…
- або виконує програму PHP — запитаного файлу: якщо він існує, інакше - файлу "/index .php". Ця директива (вказівка серверу) прописана у файлі ".htaccess" сервера "Apache" або "OpenLiteSpeed", може бути вказано в налаштуваннях сервера Nginx.
На час виконання запиту програмою PHP веб-сервер створює процес "httpd" — новий для кожного запиту. Багатоядерний процесор може виконувати ці процеси паралельно, якщо не встигає — утворюється черга на виконання процесів. Цю чергу можна спостерігати за консольною командою unix-сервера "top". Чим менший час виконання кожного процесу — тим коротша ця черга.
Індексний файл "/index.php"
Якщо виконується програма "/index.php", то вона аналізує URL (SERVER[REQUEST_URI]) та відповідно виконує одну з перерахованих дій:
- повертає картинку (/?img=…) із зазначеними параметрами: шириною, висотою, вписати в розмір або обрізати… Запит передається файлу "img.php": якщо такий запит вже був — використовується файл результату, інакше — використовується клас PHP "Imagic" — виводиться браузеру потрібного розміру картинка і результат записується у файл TMP з ім'ям, складеному з імені файлу та параметрів — для подальшого використання.
- або повертає "sitemap.xml" (мапу сайту для пошукових систем): якщо попередній запит був раніше за годину і не вказано параметр "w" — то генерується і результат зберігається. Якщо індексованих сторінок сайту більше сорока тисяч (обмеження Google - 50 тисяч) - сайтмап містить архівовані томи. Якщо мови сайту більше однієї — сайтмап мультимовний: тобто кожній сторінці основної мови вказуються альтернативні версії іншими мовами.
- або генерує відсутні файли CSS та JS з оригінальних файлів (призначених для редагування): забираючи коментарі та зайві прогалини, у CSS можуть підставлятися значення змінних (наприклад, кольори). Після налагодження сайту можна зберегти їх у статичні файли.
- або підключає відповідну програму — наприклад, для аякс-запиту (/?ajx), відображення сторінок адміністрування сайту, списку замовлень…
- або відображає запитану сторінку — у базі даних шукається сторінка з відповідним URL-адресою. При цьому аналізується наявність вказівки мови — вказується як папка ("/en/", "/ru/"). Для основної мови (сайт може бути й одномовним) — мова в URL не вказуєтся.
- якщо у базі даних сторінку не знайдено — повертається статус запиту "404" та сторінка "404" з посиланням — перейти на кореневу сторінку сайту або якщо історія браузера не порожня — повернутися на попередню сторінку. Натискання на логотип – відкрити індексну сторінку сайту.
При відображенні публічної сторінки сайту: наприкінці файлу "/index.php" підключається файл шаблону публічних сторінок "public.php".
Шаблон публічних сторінок "public.php"
- Тег HTML містить атрибути: мова сторінки (lang), id сторінки (data-id), основна мова (data-lang).
- Може вказуватися пошуковій системі канонічна сторінка — якщо запит по id сторінки (/?p=…) — забороняється індексування. Також індексування забороняється і якщо ім'я сторінки порожнє або починається з пробілу — простий спосіб виключити сторінку з індексації.
- Тег TITLE — як зазначено у формі редагування сторінки або на ім'я сторінки з іменами батьківських сторінок та ім'ям сайту
- Теги META — якщо вказано у формі редагування сторінки.
- Текст "inHead.txt" — за наявності файлу — можливість вставити Google-шрифт, Google-аналітику…
- Мета-теги "viewport", "Open Graph"
- Підключення іконки сайту, що відображається в ярлику сторінки — файлу favicon.svg або favicon.png, або favicon.ico
- Якщо в конфігурації CMS дозволено геолокацію ('geoLoc' => 1), то підключається "geoLoc.js": може застосовуватись, наприклад, для опцій доставки товарів.
- Підключаються файли CSS — вказані для сторінки — самої або як вкладеної
- Читаються з бази даних тексти шапки та підвалу сторінки
- Якщо у формі редагування сторінки вказано "META4", то перед закриттям тега "HEAD" вставляється цей текст: він може бути свій для кожної мови сайту
- В тег "BODY" вставляється текст "inBody.txt"
- В тег "HEADER" вставляється (header.php) шаблон "шапки" сторінок.
- В тег "MAIN" вставляється (p.php або інші файли) шаблон контенту відповідної сторінки сайту
- В тег "FOOTER" вставляється (footer.php) шаблон "підвалу" сторінок.
- Підключаються файли JS — вказані для сторінки — самої або як вкладеної
- Якщо увімкнено режим редагування, підключається "editMode.js" для інструментів цього режиму.