Все умеют кликать по гиперссылкам, однако не все понимают, какие процессы при этом запускаются. Нажимая на пункт меню, вы получаете новую веб-страницу. Но какая техническая работа была проведена, чтобы эта страница попала к вам?
Как сайт попадает в ваш браузер
В общих чертах принцип работы сайта выглядит так. Вы запускаете свой браузер и переходите по ссылкам. Каждый клик мышкой является отправкой данных на сервер, который физически может находиться в любой части Земли.
Ссылки содержат сегменты (текст или цифры), необходимые для того, чтобы сервер «понимал», какой ответ вам предоставить. Ответ приходит в виде HTML-строки, представляющей собой набор тегов и их атрибутов.
Полученный HTML-код расшифровывает ваш браузер, предоставляя вам удобную для просмотра веб-страницу. Разные ссылки — разные страницы. Суть просмотра сайтов технически заключается в отправке вами запросов, на которые вы получаете ответы в виде HTML. Теперь надо разобраться, где сам сервер берет этот HTML.
Пример на статическом сайте
Сервером может быть ваш домашний компьютер, но, как правило, это специально оборудованные станции, способные держать более высокую нагрузку. На сервере устанавливается программа-сервер, которая обрабатывает ваши запросы. Она находит файлы в директориях (папках) и передает их вам. Это могут быть файлы форматов изображений, видео и других. Одним из таких форматов является HTML (расширение .html).
Файл HTML — текстовый тип файла. Редактируется он при помощи текстового редактора, затем сохраняется в файловую директорию сервера, после чего программа может обращаться к нему по имени. Например, файлу с контактной информацией было присвоено имя contact.html. Тогда ваш запрос к серверу может выглядеть так: http://site.ru/contact.html.
Передав этот запрос, вы получаете от сервера соответствующий файл. Обратите внимание, что имя файла следует сразу после доменного имени site.ru, а в качестве разделителя стоит косая черта. Это говорит о том, что файл contact.html расположен в корневой директории вашего сайта.
Директории могут иметь разные уровни. Допустим, у вас большая фирма, вы не можете ограничиться контактной информацией на одном файле. Тогда вам следует создать в корневой директории не файл contact.html, а папку contact, и уже в ней сохранять отдельные файлы: moscow.html, spb.html и прочие. Ваши ссылки примут такой вид: http://site.ru/contact/moscow.html.
Страница за страницей создается сайт, который представляет собой совокупность частично разных HTML-файлов, связанных между собой ссылками (перекрестными ссылками). Почему частично разных? Обратите внимание, почти на каждом сайте есть повторяющиеся элементы, например, шапка, подвал, боковая колонка, панель меню. Если ваш сайт состоит из двадцати страниц, то в каждом HTML-файле должен быть код, описывающий указанные блоки. Это и есть статический сайт.
Такой сайт работает быстро, создается просто. Трудности начинаются, когда в него довольно часто вносятся изменения. Вам может понадобиться еженедельно менять объявление в шапке, и вам придется вносить правки во все HTML-файлы. Полбеды, когда их всего пять—семь. А если их сто? А если менять нужно не только объявления, но и пункты меню?
Немного о динамике
Программа-сервер может не только передавать существующий файл, руководствуясь сегментами вашего запроса, она может предварительно передавать эти сегменты специальному программному модулю (PHP, Python и пр.), установленному на машине. Этот модуль (обработчик) автоматически генерирует HTML-страницы, после чего передает их обратно серверу, а тот — вам.
Весь процесс кратковременно фиксируется в оперативной памяти, на диске почти никогда ничего не сохраняется. Поэтому и называется этот процесс созданием веб-страниц «на лету». Фактически страница существует только в момент ее формирования и отправки, после чего память сервера освобождается.
Более того, обработчик может взаимодействовать с базой данных (БД), где хранятся все данные сайта. Получив из БД номер телефона вашего офиса, он встраивает его во фрагмент HTML-кода. Из таких отдельных фрагментов он формирует полную HTML-страницу, которую сервер отправляет в ваш браузер. Возможно, добавление обработчика и сервера БД в общий механизм работы сайта вызывает у вас неразбериху, так что лучше привести пример.
Вы отправляете уже знакомую строку запроса http://site.ru/contact/moscow.html, которая передается программному модулю (допустим, PHP) для того, чтобы он вычленил из нее нужный сегмент, например, moscow. Затем PHP соединяется с сервером БД и посылает ему SQL-запрос на выборку данных, связанных со значением moscow. Сервер БД возвращает адреса офисов в Москве, телефоны, имена сотрудников и прочее. PHP имел только значение moscow, но после ответа сервера БД, у него стало гораздо больше значений, и все они хранятся в адресном пространстве оперативной памяти до тех пор, пока PHP-сценарий не закончит свою работу.
Но работа продолжается. PHP держит полученные данные в своих переменных, их он встраивает во фрагменты HTML-кода, затем собирает все фрагменты в общую HTML-страницу, такую же по содержанию, как и статическая страница. Когда работа скрипта заканчивается, ее результат отдается серверу, который направляет его в ваш браузер.
Для управления PHP-интерпретатором используется язык программирования PHP. Сценарии на этом языке описываются в файлах с расширением .php, которые тоже являются текстовыми. На месте PHP может быть и другая программа, например, Java-машина (JVM). Но суть остается та же.
О «магии» движков
Нередко путают понятия CMS и административная панель, и не зря. Четкой границы между ними нет. Поэтому для простоты понимания будем использовать слово «движок».
Движок можно рассматривать как обратную сторону сайта, закрытую для простых пользователей. Он так же состоит из HTML-страниц, доступных по определенным ссылкам. Но чтобы перейти на эти страницы, нужно как-то «доказать» серверу, что вы имеете на это право. Для этого в движке существует система авторизации, после прохождения которой вы попадаете на страницы с возможностями вносить изменения в вашу БД и файлы.
Механизм работы тот же, что описан выше, но здесь у вас расширенные возможности. Если будучи простым посетителем, вы запрашиваете только выборку данных, то в статусе администратора вы можете вставлять данные в базу и удалять их. Системы управления бывают платными и бесплатными, специализированными и универсальными. У последних, как правило, скорость работы — больное место. Зато приспособить их можно почти для любых целей.
Нет какой-то одной наилучшей системы. Ее так же нет, как и нет идеалов. Если система обладает рядом преимуществ, то где-то скрываются ее недостатки. При выборе системы следует учитывать, какой объем ваших задач она способна решать, насколько она расширяема. Не стоит покупаться на ее бесплатность, так как изначально нулевая стоимость может в итоге обойтись немалыми затратами на ее поддержку. А может, вам она вовсе не нужна.