Скрипты на стороне сервера — это метод, используемый в веб-разработке , который включает в себя использование скриптов на веб-сервере , который создает ответ, настроенный для каждого запроса пользователя (клиента) к веб-сайту. Скрипты могут быть написаны на любом из ряда доступных языков скриптов на стороне сервера. Скрипты на стороне сервера отличаются от скриптов на стороне клиента , где встроенные скрипты, такие как JavaScript , запускаются на стороне клиента в веб-браузере , но оба метода часто используются вместе. Альтернативой одному или обоим типам скриптов является то, что сам веб-сервер доставляет статическую веб-страницу .
Скрипты на стороне сервера часто используются для предоставления настраиваемого интерфейса для пользователя . Эти скрипты могут собирать характеристики клиента для использования при настройке ответа на основе этих характеристик, требований пользователя, прав доступа и т. д. Скрипты на стороне сервера также позволяют владельцу веб-сайта скрыть исходный код , который генерирует интерфейс, тогда как при скриптах на стороне клиента пользователь имеет доступ ко всему коду, полученному клиентом. Недостатком использования скриптов на стороне сервера является то, что клиенту необходимо делать дополнительные запросы по сети на сервер, чтобы показать новую информацию пользователю через веб-браузер . Эти запросы могут замедлить работу пользователя, увеличить нагрузку на сервер и помешать использованию приложения, когда пользователь отключен от сервера.
Когда сервер обслуживает данные общепринятым способом, например, по протоколам HTTP или FTP , пользователи могут выбирать из ряда клиентских программ (большинство современных веб-браузеров могут запрашивать и получать данные, используя оба этих протокола). В случае более специализированных приложений программисты могут написать свой собственный сервер, клиент и протокол связи, которые могут использоваться только друг с другом.
Программы, которые работают на локальном компьютере пользователя, не отправляя и не получая данные по сети, не считаются клиентами, и поэтому операции таких программ не будут считаться операциями на стороне клиента.
Netscape представила реализацию JavaScript для серверных скриптов с Netscape Enterprise Server , впервые выпущенным в декабре 1994 года (вскоре после выпуска JavaScript для браузеров). [1] [2]
Скрипты на стороне сервера были позже использованы в начале 1996 года Фредом Дюфреном при разработке первого веб-сайта для телестанции WCVB в Бостоне, штат Массачусетс . Технология описана в патенте США 5835712. Патент был выдан в 1998 году и в настоящее время принадлежит Open Invention Network (OIN). В 2010 году OIN назвала Фреда Дюфрена «Выдающимся изобретателем» за его работу над скриптами на стороне сервера.
В ранние дни Интернета серверные скрипты выполнялись почти исключительно с использованием комбинации программ на языке C , скриптов Perl и скриптов оболочки с использованием Common Gateway Interface (CGI). Эти скрипты выполнялись операционной системой , а результаты возвращались веб-сервером . Многие современные веб-серверы могут напрямую выполнять языки онлайн- скриптов , такие как ASP , JSP , Perl , PHP и Ruby, либо самим веб-сервером, либо через модули расширения (например , mod_perl или mod_php ) на веб-сервере. Например, WebDNA включает в себя собственную встроенную систему баз данных. Любая форма скриптов (т. е. CGI или прямое выполнение) может использоваться для создания сложных многостраничных сайтов, но прямое выполнение обычно приводит к меньшим накладным расходам из-за меньшего количества вызовов внешних интерпретаторов.
Динамические веб-сайты иногда используют пользовательские серверы веб-приложений, такие как Glassfish , Plack и библиотека Python "Base HTTP Server", хотя некоторые могут не считать это серверным скриптингом. При использовании динамических веб-техник скриптинга разработчики должны иметь четкое понимание логического, временного и физического разделения между клиентом и сервером. Например, чтобы действие пользователя вызвало выполнение серверного кода, разработчик, работающий с классическим ASP, должен явно заставить браузер пользователя сделать обратный запрос к веб-серверу.
Скрипты на стороне сервера полностью обрабатываются серверами, а не клиентами. Когда клиенты запрашивают страницу, содержащую скрипты на стороне сервера, сервер приложений обрабатывает скрипты и возвращает HTML-страницу клиенту.
С появлением одностраничных приложений был представлен обновленный подход к серверному скриптингу, известный как серверный рендеринг. При серверном рендеринге статический HTML может быть отправлен с сервера на клиент, а клиентский JavaScript затем делает веб-страницу динамической, прикрепляя обработчики событий к элементам HTML в процессе, называемом гидратацией . Примерами фреймворков, которые поддерживают серверный рендеринг, являются Next.js , Nuxt.js , Angular и React .
Альтернативой рендерингу на стороне сервера является генерация статического сайта . При рендеринге на стороне сервера страница обычно собирается на сервере один раз для каждого запроса. Напротив, при генерации статического сайта приложение генерирует все статические HTML-страницы во время сборки. Затем эти предварительно созданные страницы отправляются клиенту при каждом запросе, без необходимости их повторной сборки. Это приводит к более быстрому времени рендеринга, поскольку новая страница не должна генерироваться при каждом запросе; сервер просто передает файл, который он уже сгенерировал в прошлом. Недостатком является то, что при изменении некоторых данных на странице ее необходимо перестроить. Примерами инструментов генерации статического сайта являются Jekyll и Gatsby . Сайты, созданные инструментами генерации статического сайта, часто размещаются на страницах Netlify или GitHub .
Доступно несколько языков серверных скриптов, в том числе: