Динамический сайт
Динамический сайт (англ. dynamic web page) — это веб-страница, формируемая в процессе обращения к ней во время выполнения программного обеспечения, в отличие от статических веб-страниц, которые выдаются в неизменном виде, как они сохранены на сервере.
Описание
Динамический сайт с обработкой на стороне сервера — это веб-страница, формируемая под управлением приложения на сервере, обрабатывающего серверные сценарии (скрипты)[1]. При серверном программировании параметры определяют порядок сборки каждой новой страницы, а также могут инициировать дальнейшую обработку на стороне клиента.
Динамический сайт с обработкой на стороне клиента изменяет страницу с помощью выполнения JavaScript в браузере пользователя. JavaScript взаимодействует со страницей через DOM, что позволяет получить доступ к состоянию страницы и изменять его. Даже если страница динамична только на стороне клиента, её можно размещать на статическом хостинге, таком как GitHub Pages или Amazon S3, если не используется серверная обработка.
Динамический сайт может быть перезагружен пользователем или программой для изменения части переменного содержимого. Обновление информации может поступать с сервера или быть результатом локальных изменений DOM страницы. В зависимости от метода, это может приводить или не приводить к изменению истории просмотров браузера или созданию отдельных состояний для возврата. Технологии обновления с помощью AJAX не создают новых записей в истории браузера и не сбрасывают её, продолжая управлять одной динамической страницей как единственным состоянием в браузере, хотя фактическое содержимое может меняться. AJAX-движок работает в браузере и при необходимости запрашивает части DOM у серверного приложения. Конкретный сервер приложений может предоставлять стандартизированный интерфейс в стиле REST для обслуживания веб-приложений[2].
DHTML (Dynamic HTML) — обобщающее название методов и технологий, используемых для создания нестатических страниц, однако этот термин вышел из употребления после появления и популяризации AJAX (тоже уже редко используемого). Опыт динамичного взаимодействия в браузере создаётся как клиентскими, так и серверными сценариями, в том числе в их сочетаниях.
Основные концепции
Классическая гипертекстовая навигация с использованием только HTML или XHTML обеспечивает «статический» контент: пользователь запрашивает веб-страницу и видит на ней неизменяемое содержимое.
Однако страница может предоставлять также «живой», «динамический» или «интерактивный» опыт взаимодействия с пользователем. Содержание (текст, изображения, элементы форм и пр.) на веб-странице может меняться в зависимости от внешнего контекста или условий.
Достичь этого можно двумя способами:
- С помощью клиентских сценариев — изменение поведения интерфейса внутри одной конкретной страницы, в ответ на действия мышью или клавиатурой, получение данных из веб-API, через websocket или по таймеру. Здесь динамика реализуется на уровне презентации.
- С помощью серверных сценариев — изменение исходного кода страницы между разными запросами, в зависимости от данных, передаваемых через форму, параметров URL, типа браузера, времени, состояния базы данных или сервера[3].
Веб-страницы с клиентской динамикой используют различные презентационные технологии, объединяемые термином богатые интернет-приложения. Языки сценариев на стороне клиента, такие как JavaScript или ActionScript, применяемые для DHTML или Flash соответственно, позволяют управлять мультимедийными элементами оформления (звук, анимация, сменяется текст и т.д.). Сценарии также допускают использование удалённых вызовов — когда DHTML-страница запрашивает дополнительные данные с сервера, используя скрытый фрейм, XMLHttpRequest или веб-сервис. Возможно также применение веб-фреймворка, предоставляющего веб-API, к которому обращается клиентский JavaScript для получения данных и динамического изменения вида и поведения страницы.
Веб-страницы с серверной динамикой часто создают с помощью языков серверной обработки, таких как PHP, Perl, ASP, JSP, ColdFusion и других. В большинстве случаев используются методы «общего шлюза» (CGI) для генерации динамических страниц. Такие страницы могут быть совмещены с клиентской динамикой.
История
Точную хронологию появления динамических сайтов трудно определить, поскольку само понятие обрело смысл только после широкого распространения веб-страниц. Протокол HTTP реализован с 1989 года, HTML со статусом общественного стандарта — с 1996 года. Массовое распространение браузеров началось с появлением Mosaic в 1993 году. В 1995–1996 годах на рынке появились первые продукты для динамических сайтов: Coldfusion, WebObjects, PHP, ASP.
Появление JavaScript позволило реализовать клиентскую динамику, выполняя программный код непосредственно в браузере пользователя[4]. Буква «J» в аббревиатуре AJAX первоначально обозначала использование JavaScript наряду с XML. С развитием серверной обработки на JavaScript язык стал применяться и для формирования динамических страниц на сервере и передачи их полностью готовыми клиенту.
MediaWiki, система управления содержимым, работающая на Википедии, изначально создавалась как серверная динамическая система, управляемая через формы и параметры URL. Позднее в неё были добавлены прогрессивные клиентские компоненты, обеспечивающие дополнительную динамику, при этом базовые серверные механизмы и формы всегда доступны для работы даже при ошибках или несовместимости браузера (постепенное ухудшение).
Серверное программирование
На веб-сервере выполняется программа, формирующая веб-контент, управляющая пользовательскими сессиями и рабочими процессами. Ответы сервера определяются такими условиями, как данные из переданной формы, параметры URL, вид браузера, текущее время, состояние базы данных или сервера.
Такие страницы обычно создаются с помощью серверных языков, включая ASP, ColdFusion, Java, JavaScript, Perl, PHP, Ruby, Python и других. Для их работы используется сервер поддержки, который может находиться на том же оборудовании, что и веб-сервер. Серверные сценарии обычно используют общий шлюз CGI для генерации динамических страниц; исключение составляют ASP.NET и JSP, которые реализуют собственные виртуальные машины, перенимая лишь идеи CGI на уровне API.
На сервере языки используются для включения меток или специальных конструкций в исходные файлы страниц[5]. При обращении пользователя к странице сервер анализирует эти конструкции и выполняет нужные действия, например, подставляет информацию из базы данных или текущую дату.
Если страница часто запрашивается с одинаковым содержимым, её динамически сгенерированную версию можно сохранять в кэше для ускорения загрузки и уменьшения нагрузки на сервер.
Клиентское программирование
Клиентские сценарии изменяют поведение интерфейса в рамках конкретной страницы в ответ на действия пользователя или по расписанию. В этом случае динамика реализуется на уровне презентации, а содержимое генерируется на локальном компьютере пользователя[6].
Такие страницы используют технологии богатых интерфейсов. Языки клиентских сценариев, такие как JavaScript или ActionScript, применяются для создания DHTML, Flash и управления мультимедийными компонентами (звук, анимация, текст и т. д.). Клиентские сценарии также поддерживают удалённые вызовы дополнительной информации с сервера через скрытый фрейм, XMLHttpRequest или веб-сервис.
Первое публичное использование JavaScript было реализовано в 1995 году в Netscape Navigator 2, а стандарт языка (ECMAScript) появился спустя два года[7].
- Пример
Контент, формируемый на стороне клиента, появляется непосредственно на компьютере пользователя. Браузер получает страницу с сервера, затем обрабатывает встроенный код (обычно на JavaScript) и формирует отображаемый результат[8].
Свойство innerHTML (или команда write) иллюстрирует динамику: две разные страницы A и B могут по событию отображаться присваиванием document.innerHTML = A и document.innerHTML = B, или — «динамика при загрузке» командой document.write(A) и document.write(B).
Комбинированные технологии
Все взаимодействующие компоненты клиента и сервера для построения динамического сайта называют веб-приложением. Веб-приложения управляют взаимодействием с пользователем, состоянием, безопасностью и производительностью[9].
Ajax сочетает клиентские и серверные сценарии. Это подход к созданию веб-приложений, при котором происходит динамический обмен данными с сервером, минимизируя перезагрузки страницы: клиент посылает запрос за данными, сервер возвращает результат, который обрабатывает клиентский скрипт. Это сокращает время загрузки — передаются только изменившиеся данные, а не вся страница. Google Карты — пример веб-приложения, использующего Ajax.
Веб-клиент, например браузер, сам может выступать сервером данных, собирая содержимое и из множества источников (Gopher, FTP, NNTP (Usenet), HTTP). HTTP поддерживает и обратную передачу документов с клиента на сервер — существуют специальные методы HTTP для этих целей.
Примечания
Литература
- "Learning VBScript", P. Lomax. ISBN 1-56592-247-6. O'Reilly, 1997.
- Tatroe, Kevin. Programming PHP: Creating Dynamic Web Pages : [англ.]. — 3. — O'Reilly, 2013. — ISBN 9781449365837.
- Okin, J. R. The Information Revolution: The Not-for-dummies Guide to the History, Technology, and Use of the World Wide Web : [англ.]. — Ironbound Press, 2005. — ISBN 9780976385745.
Ссылки
- Статические и динамические сайты на W3.org
- Динамические сайты c использованием Relationship Management Method на W3.org
- Обзор динамических веб-страниц на сайте Техасского университета в Остине


