Технологические основы
реть технологические основы взаимодействия клиента и сервера в рамках
протокола HTTP.
Пользователь вводит URL, найденный на чьей-то визитке или на огромном
рекламном щите, что висит поперек дороги, в адресную строку браузера. Или
щелкает мышью по ссылке на уже открытой в окошке браузера
веб-странице. Или нажимает кнопку Найти в форме поисковика. Что происходит
дальше?
Клиентская программа, т. е. браузер, формирует HTTP-запрос. Этот запрос в
любом случае содержит точный URL того ресурса, к которому требуется
получить доступ (таким ресурсом вовсе не обязательно должна быть
вебстраница — пользователь может запросить ZIP-архив, PDF-документ,
звукозапись в формате МРЗ или объект любого другого типа).
Сообщения запроса и ответа в рамках протокола HTTP имеют общий формат.
HTTP-сообщение — это простой текст (имеется в виду, что любой человек
без каких бы то ни было лишних усилий может прочесть этот текст. В HTTP-
сообщениях нет «страшных» бинарных полей фиксированной длины,
характерных, например, для кадров или пакетов данных). Как запрос, так и ответ в
обязательном порядке предваряется начальной строкой (start line). Все
остальные элементы являются факультативными. За начальной строкой могут
следовать одно или несколько полей заголовка (каждое — на новой строке).
После заголовка начинается тело сообщения. Заголовок и тело отделяются
друг от друга пустой строкой.
Начальная строка имеет следующий формат:
метод URI версия_протокола
Пример возможной начальной строки клиентского запроса:
GET http://www.yandex.ru/ НТТР/1.1
Метод указывает, какое действие предполагается совершить с
запрашиваемым ресурсом. Примеры HTTP-методов: get (получить содержимое ресурса),
post (отправить данные на обработку), put (разместить данные на сервере),
delete (удалить ресурс), head (получить информацию о ресурсе без передачи
его содержимого) и пр.
Только два метода приводят к загрузке веб-страниц в окошко браузера — это
get и post. Метод get используется в подавляющем большинстве случаев: он
позволяет «без затей» получить указанный в начальной строке запроса ресурс.
Метод post применяется в тех случаях, когда требуется отправить на сервер
большое количество данных от пользователя (к примеру, результат
заполнения какой-нибудь анкеты). Небольшую порцию пользовательских параметров
можно передать на сервер и с помощью метода get (непосредственно в соста-
Глава 1. Устройство сайта
51
ве строки URL запрашиваемого ресурса после вопросительного знака —
о такой возможности мы уже говорили, рассматривая форматы URL).
Все остальные HTTP-методы будут интересовать нас значительно меньше.
Говоря о клиентских запросах в рамках данной главы, мы будем по
умолчанию подразумевать get- или POST-запросы.
Сервер обрабатывает запросы клиента в порядке общей очереди.
Поступающие запросы сохраняются в буфере — специально назначенной для этих
целей области памяти физической машины. Если запросы будут поступать
слишком часто, может наступить момент, когда сервер перестанет успевать
обрабатывать их все. В этом случае произойдет переполнение буфера, и часть
запросов попросту потеряется. Очевидно, что производительность
вебсервера по обработке клиентских запросов напрямую зависит от технических
характеристик используемого компьютера — в первую очередь, конечно же,
от быстродействия процессора и от объема памяти.
Подавляющее большинство реальных веб-проектов использует так
называемый виртуальный хостинг — схему, при которой на одной физической
машине средней, прямо скажем, производительности уживаются десятки и даже
сотни сайтов (тоже средненьких, с посещаемостью в районе нескольких сотен
человек в день). Как уже говорилось выше, веб-сервер можно настроить
таким образом, чтобы он обслуживал множество независимых виртуальных
хостов, которые извне ничем не отличаются от реальных веб-узлов, т. е.
могут обладать своими собственными доменными именами и даже, при
необходимости, выделенными IP-адресами.
Более серьезные сайты, с посещаемостью в десятки тысяч человек в день,
уже не могут довольствоваться возможностями виртуального хостинга —
такие проекты используют выделенные физические серверы: одна машина —
один сайт.
Но есть и такие проекты, которым недостаточно и выделенной машины,
пусть даже многопроцессорной и весьма высокопроизводительной.
5th Фев 2011
|
Теги:
|