Опис

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"

  1. Тег HTML містить атрибути: мова сторінки (lang), id сторінки (data-id), основна мова (data-lang).
  2. Може вказуватися пошуковій системі канонічна сторінка — якщо запит по id сторінки (/?p=…) — забороняється індексування. Також індексування забороняється і якщо ім'я сторінки порожнє або починається з пробілу — простий спосіб виключити сторінку з індексації.
  3. Тег TITLE — як зазначено у формі редагування сторінки або на ім'я сторінки з іменами батьківських сторінок та ім'ям сайту
  4. Теги META — якщо вказано у формі редагування сторінки.
  5. Текст "inHead.txt" — за наявності файлу — можливість вставити Google-шрифт, Google-аналітику…
  6. Мета-теги "viewport", "Open Graph"
  7. Підключення іконки сайту, що відображається в ярлику сторінки — файлу favicon.svg або favicon.png, або favicon.ico
  8. Якщо в конфігурації CMS дозволено геолокацію ('geoLoc' => 1), то підключається "geoLoc.js": може застосовуватись, наприклад, для опцій доставки товарів.
  9. Підключаються файли CSS — вказані для сторінки — самої або як вкладеної
  10. Читаються з бази даних тексти шапки та підвалу сторінки
  11. Якщо у формі редагування сторінки вказано "META4", то перед закриттям тега "HEAD" вставляється цей текст: він може бути свій для кожної мови сайту
  12. В тег "BODY" вставляється текст "inBody.txt"
  13. В тег "HEADER" вставляється (header.php) шаблон "шапки" сторінок.
  14. В тег "MAIN" вставляється (p.php або інші файли) шаблон контенту відповідної сторінки сайту
  15. В тег "FOOTER" вставляється (footer.php) шаблон "підвалу" сторінок.
  16. Підключаються файли JS — вказані для сторінки — самої або як вкладеної
  17. Якщо увімкнено режим редагування, підключається "editMode.js" для інструментів цього режиму.