[динамически создаваемые web-страницы]материал подготовил: Александр Якутский 20.02.2003
большинство пользователей, решивших попробовать себя в сайтостроительстве, поступают вполне разумно и первый свой сайт размещают на серверах бесплатного хостинга. Нужно ведь хорошенько «пощупать» возможности HTML и CSS, приобщиться к таинствам JavaScript, получить первые практические навыки дизайна, а самое главное — понять, насколько это дело тебе по душе и по способностям, хватит ли терпения и настойчивости в воспитании своего виртуального чада. Для этих целей как раз и подходят службы бесплатного хостинга, коих в Сети предостаточно. Но если уж дело пошло на лад, сайт приносит моральное удовлетворение и даже есть намеки на материальную от него отдачу (и такое бывает, хотя и нечасто!), то самое время задуматься о хостинге коммерческом. Тому есть масса причин. Рассмотреть их все в этой небольшой статье не представляется возможным, поэтому пока остановимся на одной. Речь ниже пойдет о том, что коммерческий хостер, как правило, в одном или нескольких тарифных планах предусматривает поддержку полноценно динамичных веб-страниц на виртуальном сервере клиента.
Наречие «полноценно» из предыдущего предложения означает, что говорить мы будем не о возможностях Dynamic HTML вкупе с JavaScript, и уж тем более не о «динамично» мерцающих анимированных gif-файлах, заполонивших страницу. Эти удовольствия доступны и при бесплатном хостинге. Обсудим задачи, которые стандартными средствами не решить.
Допустим, ваш сайт разросся и представляет собой уже не один десяток страниц. Добротно скомпонованных, «легких», читабельных и вообще, приятных на вид. Счетчики там, баннеры всякие с помощью JavaScript проставлены на каждой странице. Все замечательно, одним словом. Но только до того момента, пока вы не решите отказаться от участия в одной сети баннерного обмена и перейти в другую. Или «снести» никчемный счетчик. Или кардинальным образом поменять дизайн. В этом случае вам придется вручную выискивать в каждом файле соответствующие куски кода и вносить в него изменения. Задача несложная, но рутинная, и иногда приводящая к ошибкам. Есть программные средства, позволяющие производить поиск и замену текста в файлах, но они не всегда способны помочь. Еще один путь — использование фреймов, по нему частенько вынуждены идти бесплатно хостящиеся пользователи. Но и этот способ функционально ограничен, а с точки зрения веб-дизайна — крайне нежелателен.
Гораздо удобнее воспользоваться специализированными языками программирования: Perl, PHP, Parser. В совокупности с базами данных MySQL, PostgreeSQL и им подобными, эти инструменты способны творить чудеса. Скажем, весь сайт может состоять из… одной страницы, index.php, которая открывается с разными параметрами. И от значений этих переменных параметров будет зависеть содержимое открывшейся в браузере страницы. Так и получаются полноценно динамичные веб-страницы. Причем организовывается это так, что посетитель не видит никакой разницы между набором обычных HTML-страниц и страницей, написанной на PHP или с помощью другого языка. Разве что в адресной строке браузера он замечает какие-то дополнительные символы и цифры.
Понятно, что в случае, когда сайт состоит из одной страницы, изменить его дизайн довольно просто. Чтобы еще больше облегчить эту задачу, поступают следующим образом. Отдельные фрагменты дизайна (шапку, главное меню, содержимое табличных полей и т.д.) описывают в разных текстовых файлах, а в код страницы вставляют простейшие инструкции: сюда включить (include) содержимое этого файла, а сюда — того.
Вот и получается, что добавляешь в один файл, ответственный за главное меню, описание нового раздела сайта, а ссылка на этот раздел моментально появляется на всех динамичных веб-страницах ресурса. То же самое касается любых фрагментов кода, будь то счетчики, баннеры или форма подписки на рассылку.
Рассмотрим еще одну ситуацию. Как заставить посетителя просматривать не одну, а несколько страниц сайта? Заставить не получится, а подтолкнуть к этому можно. Например, создав некую «вну
треннюю» систему баннеров-«ушек» или текстовых ссылок. Скажем, посетитель попал на страницу с общим описанием программного продукта, а на другой странице подробно описан конкретный случай применения этой программы. Хотелось бы подсунуть ему соответствующую ссылочку, не правда ли? Как это сделать? При небольшом количестве страниц задача решается средствами стандартного HTML. А при большом? А если ссылка вела на страницу чужого сайта, ныне недоступного? изволь рыться во всех страницах, вылавливать и уничтожать эту ссылку вручную.
При использовании динамической генерации страниц эту задачу можно решить более красиво. В базе MySQL создать таблицу, описывающую связи между набором текстовых ссылок и страницами, на которых они должны отображаться. В PHP-код включить несложную процедуру, которая будет находить все требующиеся ссылки и подверстывать их к основному тексту статьи. Кроме того, можно написать скрипт на языке Perl, при запуске которого URL’ы текстовых ссылок из вышеупомянутой таблицы будут проверяться на предмет «живучести». Скрипт аккуратно подберет все URL, которые не откликаются в данный момент, и предложит его вам для подробного анализа, временная это проблема или ссылку лучше удалить из базы: сайт, на который она ведет, погиб безвозвратно… Кстати, коммерческие хостеры предоставляют возможность использования так называемой cron-таблицы, своеобразного расписания задач. С помощью cron можно задать автоматический ежедневный запуск этого или другого скрипта и этим еще больше облегчить свою жизнь.
Наконец, еще один немаловажный момент: форумы, гостевые книги и другие вспомогательные сервисы, которыми неизбежно обрастает сайт со сложившейся аудиторией. интернет, не в последнюю очередь, — среда для общения. Необходимо дать людям возможность высказать свое мнение о вас, вашем сайте, правительстве и последнем фильме Спилберга. Некоммерческие хостеры и специализированные бесплатные онлайн-сервисы зачастую предлагают пользователям обзавестись форумом или чатом. Но это вновь — полумера. Функционально такие сервисы сильно ограничены. На их страницах размещена реклама владельца службы. Кроме того, невозможно подстроить их дизайн под ваш. Образно говоря, к вам в гости пришел друг, а вы приглашаете его поболтать в гостинице неподалеку, комфортной, но чужой. Друг может и обидеться, не правда ли?
А имея в своем распоряжении средства динамической генерации страниц, вы сможете создавать собственные площадки для общения. При этом даже необязательно писать их код самостоятельно: в Рунете предостаточно коллекций готовых скриптов с подробными инструкциями по установке и настройке. Пользуйтесь на здоровье.
Эти и множество других задач могут быть решены только в рамках коммерческого хостинга. Но вот вопрос: почему бесплатные службы не предоставляют пользователям таких удобств? Чтобы разобраться в этом, нужно сначала понять, что происходит, когда посетитель пытается просмотреть обычную HTML-страницу с вкраплениями JavaScript. В этом случае сервер, на котором физически расположена страница, получает запрос от браузера и просто передает ему HTML-код страницы. Браузер читает его, интерпретирует и выводит на экран содержимое страницы, производя HTML-форматирование и выполняя директивы JS. Обратите внимание: все процессы выполняются на компьютере посетителя. В задачи сервера входит лишь обнаружить страницу на своем жестком диске и отправить ее содержимое запрашивающему пользователю по Сети.
В случае же использования технологий динамической генерации все происходит совсем иначе. Сервер получает запрос на открытие PHP-страницы или Perl-скрипта, читает код и самостоятельно интерпретирует его содержимое: подключает все необходимые файлы, находит необходимые записи в базе данных и т.п. В итоге сервер (именно он!) генерирует из кода обычную HTML-страницу и уже после этого передает ее по Сети, используя протокол HTTP. Как видим, в этом случае нагрузка на сервер значительно возрастает, а значит, возрастают требования к нему и к службе технического сопровождения, возрастают затраты.
Еще один важнейший момент — безопасность. Как мы уже говорили, при динамической генерации сервер самостоятельно интерпретирует код и выполняет содержащиеся в нем директивы. А если код «дырявый», то есть содержит лазейку для злоумышленника? В этом случае существует опасность, что некто сумеет подсунуть такую директиву на исполнение, что сайт будет уничтожен, да и сам сервер попросту «рухнет». Для того, чтобы смягчить последствия таких происшествий, коммер