Расскажу вам сегодня свой взгляд на современное массовое сайтостроительство. С этой сферой я тесно связан, есть несколько десятков своих сайтов, занимаюсь разработкой в чужих проектах. Поэтому представление о положении дел в отрасли имею.
Технологии создания сайтов сегодня остаются на уровне 15-летней давности. В общих чертах процесс выглядит так. Есть сервер (это компьютер), на котором работает веб-сервер (это программа). Сервер доступен для запросов из сети интернет. Браузер (IE, Chrome, Safari, FireFox и т.д.) на компьютере пользователя делает запрос к серверу, используя имя сайта в адресной строке. Сервер направляет запрос к веб-серверу (в программу), который в зависимости от запроса в ответ выдает страницу в HTML-формате. Тут пока что-то сложно поменять. Но от момента получения запроса до выдачи страницы, веб-сервер, чаще всего, совершает следующие действия:
- Перенаправляет запрос другой программе - интерпретатору некоего скриптового языка (ruby, php, perl и т.п.)
- Интерпретатор считывает один или несколько файлов содержащих скрипт, интерпретирует его в выполняемый код и выполняет.
- Код в выходной поток выдает ответ в виде потока символов, который сначала интерпретатор передает в веб-сервер, а веб-сервер уже наружу в сеть.
В начале двухтысячных я создавал с помощью Delphi веб-сервер, который работал в операционной системе Windows-NT и выдавал страниц в ответ на запросы. Скриптов в нем не было. Все модули были в скомпилированном виде и работали очень быстро (без посредников). Тогда я еще не был знаком с PHP. Плюсы такого подхода в высоком быстродействии и оптимально расходовании ресурсов. Минусы - сложность разработки и более высокая стоимость разработчика. При каждом изменении надо компилировать программу (или модуль) заново. Похожий подход используется при разработке веб-приложений с помощью java (не путайте с javascript - это разные языки).
Со скриптами разработка несколько проще. Компилировать не надо, любые изменения можно увидеть сразу же. Минусы - меньшее быстродействие, требуют больше ресурсов от аппаратной части.
Вообще, если вы не используете готовую CMS, то любой сайт это вновь изобретенный велосипед. Он и с CMS "велосипед", но в меньшей степени. CMS же это громоздкий набор скриптов, в который и сам разработчик через год с трудом разберется. Кроме того, большинство (да почти все) систем настолько "тяжелые", что приходится использовать различные ухищрения: кэширование конетента и кода,. Например Zend оптимизатор умеет один раз перевести (транслировать) код скрипта в байт-код, сохранить его в кэше, а затем выполнять, сокращая время операций. Поэтому когда у меня справшивают "а почему Joomla так тормозит", то я отвечаю "...".
Как же должны в идеальном случае разрабатываться массовые сайты? На компьютере мы запускаем некую программу-построитель сайта. С помощью графического интерфейса "рисуем страницы" и определяем логику работы каждой страницы. Должно быть много готовых типовых решений. Нажимаем кнопку "готово" и получаем бинарный код модуля под конкретную операционную систему. Нет смысла делать универсальный код для Linux и Windows. Практика показывает, что и компании, и обычные люди работают под одной выбранной системой. Такой модуль работает быстро, создатель сайта делает рутинные вещи быстро и удобно. И можно сосредоточиться на бизнес-идеях, вместо погружения в реализацию банальностей.
Теоретически и сейчас вы можете написать программу, которая будет отдавать веб-страницы и заставить Апач (Apache) или Nginx передавать ей запросы. Но путь для создания таких программ должен быть простой.
С точки зрения владельца такой способ создания сайта и поддержания его актуальности (изменения набора страниц и логики) существенно снижает общие расходы. 90% сайтов в интернете по своей функциональности повторяют друг-друга. Отличия только в дизайне. Быстро работающий сайт снижает затраты на дополнительные усилия на оптимизацию со стороны недешевых специалистов. Кроме того, выпуск прототипа для тех же интернет-стартапов происходит быстрее. Соответственно можно раньше узнать "пойдет или нет вообще".
©Cooper-Johns