Серверные сценарии

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Серверные сценарии (англ. англ. Server-side scripting) — технология, применяемая в веб-разработке, которая заключается в использовании сценариев на веб-сервере, формирующих ответ, адаптированный для каждого запроса пользователя (клиента) к веб-сайту. Сценарии могут быть написаны на любом из множества доступных серверных языков сценариев. Серверные сценарии отличаются от клиентских сценариев, где встроенные сценарии, такие как JavaScript, выполняются на стороне клиента в веб-браузере, однако обе технологии часто используются совместно. Альтернативой использованию одного или обоих видов сценариев является предоставление веб-сервером статической веб-страницы.

Серверные сценарии часто используются для предоставления пользователю индивидуализированного интерфейса. Эти сценарии могут собирать характеристики клиента для настройки ответа на основе этих характеристик, требований пользователя, прав доступа и т. д. Серверные сценарии также позволяют владельцу веб-сайта скрыть исходный код, генерирующий интерфейс, тогда как при использовании клиентских сценариев пользователь имеет доступ ко всему коду, полученному клиентом. Недостатком использования серверных сценариев является то, что клиенту необходимо делать дополнительные запросы по сети к серверу, чтобы отобразить новую информацию пользователю через веб-браузер[1]. Эти запросы могут замедлять работу для пользователя, создавать дополнительную нагрузку на сервер и препятствовать использованию приложения, когда пользователь отключён от сервера.

Когда сервер предоставляет данные общепринятым способом, например, по протоколам HTTP или FTP, пользователи могут выбирать из нескольких клиентских программ (большинство современных веб-браузеров могут запрашивать и получать данные по обоим этим протоколам). В случае более специализированных приложений программисты могут писать собственные сервер, клиент и протокол связи, которые могут использоваться только друг с другом.

Программы, которые работают на локальном компьютере пользователя без отправки или получения данных по сети, не считаются клиентами, и, следовательно, операции таких программ не будут считаться операциями на стороне клиента.

Компания Netscape представила реализацию JavaScript для серверных сценариев в составе Netscape Enterprise Server, впервые выпущенного в декабре 1994 года (вскоре после выпуска JavaScript для браузеров)[2][3].

Позже, в начале 1996 года, серверные сценарии были использованы Фредом Дюфреном при разработке первого веб-сайта для бостонской телевизионной станции WCVB-TV. Технология описана в патенте США 5835712. Патент был выдан в 1998 году и в настоящее время принадлежит Open Invention Network (OIN). В 2010 году OIN назвала Фреда Дюфрена «Выдающимся изобретателем» за его работу над серверными сценариями.

Объяснение

[править | править код]

На заре развития веба серверные сценарии выполнялись почти исключительно с помощью комбинации программ на языке C, сценариев на Perl и сценариев командной строки с использованием общего шлюзового интерфейса (CGI). Эти сценарии выполнялись операционной системой, а результаты возвращались веб-сервером. Многие современные веб-серверы могут напрямую выполнять скриптовые языки, такие как ASP, JSP, Perl, PHP и Ruby, либо самим веб-сервером, либо через модули-расширения (например, mod_perl или mod_php). Например, WebDNA включает собственную встроенную систему баз данных. Любая форма выполнения сценариев (CGI или прямое выполнение) может использоваться для создания сложных многостраничных сайтов, но прямое выполнение обычно приводит к меньшим накладным расходам из-за меньшего количества вызовов внешних интерпретаторов.

Динамические веб-сайты иногда используют специализированные серверы веб-приложений, такие как GlassFish, Plack и библиотеку «BaseHTTPServer» языка Python, хотя некоторые могут не считать это серверными сценариями. При использовании динамических техник веб-сценариев разработчики должны хорошо понимать логическое, временное и физическое разделение между клиентом и сервером. Например, чтобы действие пользователя вызвало выполнение кода на стороне сервера, разработчик, работающий с классическим ASP, должен явно заставить браузер пользователя отправить запрос обратно на веб-сервер.

Серверные сценарии полностью обрабатываются серверами, а не клиентами. Когда клиенты запрашивают страницу, содержащую серверные сценарии, сервер приложений обрабатывает сценарии и возвращает клиенту HTML-страницу.

Серверный рендеринг

[править | править код]

С появлением одностраничных приложений был представлен обновлённый подход к серверным сценариям, известный как серверный рендеринг (англ. англ. server-side rendering, SSR). При серверном рендеринге статический HTML может быть отправлен с сервера клиенту, а затем клиентский JavaScript делает веб-страницу динамической, привязывая обработчики событий к элементам HTML в процессе, называемом гидратацией. Примерами фреймворков, поддерживающих серверный рендеринг, являются Next.js, Nuxt.js и Angular.

Альтернативой серверному рендерингу является генерация статических сайтов (англ. англ. static site generation, SSG). При серверном рендеринге страница, как правило, собирается на сервере один раз для каждого запроса. В отличие от этого, при генерации статических сайтов приложение создаёт все статические HTML-страницы на этапе сборки. Эти заранее созданные страницы затем отправляются клиенту при каждом запросе без необходимости их повторной сборки. Это приводит к более быстрому времени отрисовки, так как новую страницу не нужно генерировать при каждом запросе; сервер просто передаёт файл, который он уже создал ранее. Недостатком является то, что при изменении каких-либо данных на странице её необходимо пересобирать. Примерами инструментов для генерации статических сайтов являются Jekyll и Gatsby. Сайты, созданные с помощью таких инструментов, часто размещаются на Netlify, Vercel или GitHub Pages.

Примечания

[править | править код]
  1. What do client side and server side mean? Client side vs. server side (англ.). Cloudflare. Дата обращения: 17 апреля 2025.
  2. Server-Side JavaScript Guide (англ.). Netscape Communications Corporation (1998). Дата обращения: 25 апреля 2012.
  3. Mike Morgan. Using Netscape™ LiveWire™, Special Edition (англ.). Que (1996).